Giter Club home page Giter Club logo

monorepo's Introduction

Devographics Monorepo

This is the codebase that runs the Devographics surveys, such as State of JS and State of CSS.

Setup

1. Install pnpm

This monorepo uses pnpm, and you should start by installing it.

2. Clone Repositories

A. Install Script

You can clone all repositories in the right place and create blank .env files with the following install script:

curl -o- https://raw.githubusercontent.com/Devographics/Monorepo/main/install.sh | bash

B. Manual Install

Monorepo
  • Clone this monorepo locally with git clone https://github.com/Devographics/Monorepo.git
Other repos

The survey apps rely on a lot of metadata. If you need to load or modify this metadata from your local filesystem instead of through our API, you can optionally also clone these other repos:

  1. entities: the YAML files containing all metadata for the features, sites, people, libraries, etc. mentioned in the surveys.
  2. surveys: contains the YAML files that define survey configs and outlines.
  3. locale-en-US: (or any other locale) contains the locale strings used in the survey.

I suggest using the following file structure:

  • devographics parent directory
    • devographics/monorepo
      • devographics/monorepo/surveyform
      • devographics/monorepo/results
      • devographics/monorepo/...
    • devographics/entities
    • devographics/surveys
    • devographics/locales
      • devographics/locales/locale-en-US
      • devographics/locales/locale-fr-FR
      • devographics/locales/...

3. Install Dependencies

Whenever you need to run a project in the monorepo directory (such as results, surveyform, etc.), you will need to first run pnpm install from within its subdirectory.

  • cd monorepo
  • pnpm install

This will install dependencies for all applications of the monorepository.

4. Running a Project

You can run each project with pnpm run dev when inside its subdirectory.

For example, for the surveyform app:

  • cd monorepo
  • cd surveyform
  • pnpm run dev

If this is your first time running a project, you will run into some issues that need to be fixed by configuring your local environment variables (see below).

Remote vs Local API

You can run the results and surveyform project by connecting to our remote production API (https://api.devographics.com/graphql).

Alternatively, if you want to use local files for the surveys, locales, etc. you will need to run a local copy of the API project (monorepo/api) locally as well to load them. Once the API is running, you can then point the other apps to it via the API_URL env variable.

Note that even when the API is running locally, you will still need internet access to connect to the databases and load image assets.

5. Environment Variables Setup

Each app within monorepo needs its own environment variables defined inside a .env files (except for surveyform and surveyadmin, which use a .env.development.local file).

Here are some ways that can help with this setup:

  1. You can use the .env.example file in each project subdirectory (such as this one for the surveyform project) as a starting point by pasting its contents into your own .env or .env.development.local (for Next.js projects such as surveyform) file.
  2. You will need credentials to connect to our MongoDB and Redis staging database. You can ask me (Sacha) on Discord and I will provide them.
  3. When running the app with pnpm run dev you will get error messages indicating any remaining missing environment variables.

You can also refer to variables.yml directly and look for variables corresponding to the current app (e.g. results).

Apps

The following apps are all contained within the monorepo.

📡 API

Node.js TypeScript app.

What It Does
  • Make the outlines of each survey available to the survey form app.
  • Connect to the database and generate the data for the results app's charts.
  • Provide the internationalisation strings for each locale.
Code
Hosted On

🔍 GraphiQL

GraphQL IDE

What It Does
  • Make it easier to test and query the API.
Code
Hosted On
Domain

✍️ Surveyform

Next.js TypeScript app.

What It Does
  • Let respondents take the survey.
Code
Hosted On
Domain

📊 Results

Gatsby TypeScript app.

What It Does
  • Display the survey results.
Code
Hosted On
Domains

🔒 Surveyadmin

Admin app.

What It Does
  • Provide a dashboard to manage all surveys.
  • Handle data processing and normalization.
Hosted On
  • Only running locally for now.

Databases

🗂️ Main Database

MongoDB database.

What It Does
  • Store the raw data entered by respondents.
  • Store the "normalized" data once it's been processed.
Hosted On
Local dev

You can plug to a staging database or run Mongo locally via Docker.

See "docker-compose.yml" and "Justfile" for our local setup. When running locally, data are stored in a ".mongo" folder in the monorepo folder. You can delete this folder to reset the local database.

💾 Cache Database

Redis database.

What It Does
  • Cache the results of queries made to the API app.
Hosted On
Local dev

You can plug to a staging database or run Redis locally.

Since we use Upstash, which rely on HTTP requests instead of direct Redis connection, we also setup an HTTP proxy.

See "docker-compose.yml" and "Justfile" for our local setup.

To reset the local Redis instance, the best approach is to remove the Redis container.


Assets

🌐 Locales

Locale strings

What It Does
  • Store locale strings for various languages as YAML files.
Repos

📖 Survey Config

Outline and config files for each survey.

What It Does
  • Store outline and config files for each survey as YAML files.
Repo
Domains

🖼️ Static Assets

Static image files.

What It Does
  • Store static images such as logos, social media preview images, etc.
Repo
Hosted On
Domains

Contribute

Emojis to distinguish commits within the monorepo:

  • 🅿️ :parking: for the whole monorepo ("P" for "Pnpm")
  • :gear: for the shared folder
  • 🔍 :mag: for graphiql
  • 📡 :satellite:for the api
  • 📊 :bar_chart:for the results
  • 🏠 :house:for the homepage
  • ✍ ️:writing_hand: for the surveyform
  • 🔒 :lock: for the surveyadmin
  • 🌐 :globe_with_meridians: for the locales
  • 📖 :book: for the surveys
  • 🙎 :person_pouting: for the entities
  • 🖼️ :frame_photo: for the images

Env Variables

See "shared/helpers/variables.yml" for a more up to date list.

API

Variable Description Used By
API_URL URL of the API All

MongoDB

Variable Description Used By
MONGO_URI URI of the Mongo database All
MONGO_PRIVATE_DB Name of the database where private data is stored Surveyform
MONGO_PUBLIC_DB Name of the database where public data is stored API

Redis

Variable Description Used By
REDIS_URL URL of the Redis database Surveyform
REDIS_TOKEN Redis token (needed for Upstash) Surveyform

GitHub

Variable Description Used By
GITHUB_TOKEN GitHub access token Results
GITHUB_PATH_SURVEYS Path to surveys dir on GitHub (e.g. org/repo/(subdir)) Results
GITHUB_PATH_LOCALES Path to locales dir on GitHub (e.g. org/(repo)/(subdir)) Results, API
  • For GITHUB_PATH_SURVEYS, the subdir segment can be omitted. It will then be assumed that the surveys data is at the root of the repo.
  • For GITHUB_PATH_LOCALES, both the repo and the subdir segments can be omitted. It will then be assumed that the locales each have their own separate repo.

Email

Variable Description Used By
EMAIL_OCTOPUS_APIKEY EmailOctopus API key Surveyform
DEFAULT_MAIL_FROM Default "from" email (e.g. [email protected]) Surveyform
SMTP_HOST SMTP host (e.g. email-smtp.us-east-1.amazonaws.com) Surveyform
SMTP_PORT SMTP port (e.g. 465) Surveyform
SMTP_SECURE Set to "1" Surveyform
SMTP_USER SMTP username Surveyform
SMTP_PASS SMTP password Surveyform

EMAIL_OCTOPUS_APIKEY

Other Config

Variable Description Used By
ENCRYPTION_KEY Encryption key to hash emails Surveyform
SECRET_KEY Secret key used to verify external webhook requests API
ASSETS_URL URL for static assets (e.g. https://assets.devographics.com/) All

Local Dev

Variable Description Used By
SURVEYS_DIR Local directory from which to load survey outlines API
LOCALES_DIR Local directory from which to load locale files API
ENTITIES_DIR Local directory from which to load entities files API
ENABLE_CACHE Set to false to always load data from the API All
PORT Which port to run the app on All
LOGS_DIRECTORY Absolute path to logs dir (e.g. /Users/sacha/monorepo/surveyform/.logs) All
  • If SURVEYS_DIR is defined, surveys data will be loaded locally instead of from GitHub.
  • If LOCALES_DIR is defined, locales data will be loaded locally instead of from GitHub.
  • If ENTITIES_DIR is defined, entities data will be loaded locally instead of from GitHub.

Other 3rd party services

  • Plausible for analytics

monorepo's People

Contributors

alfiofederico avatar andnorda avatar b3nk3 avatar chris-c-thomas avatar chriskirknielsen avatar dfcowell avatar drugoi avatar eric-burel avatar icepeng avatar jcurver avatar khaledgarbaya avatar kilian avatar kingsit3 avatar leaverou avatar lex111 avatar littleee avatar nielscodes avatar plouc avatar sachag avatar srk1195 avatar the-physicist avatar willmustafa avatar yuriy636 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

monorepo's Issues

New Homepage(s) To-Dos

  • figure out server-side redirects
  • pass on referrer, source, etc. to "take survey" button
  • re-enable sharing buttons?
  • mobile version
  • main hero image?
  • placeholder when no survey is currently open?
  • favicon
  • better wording all around (stay tuned -> take part in the next survey)
  • Add markdown parsing or innerHTML to intro text block
  • Double check meta tags

Charts are missing on the "Technologies" page

How to Reproduce

Browse to https://2021.stateofcss.com/en-US/technologies

Observed

Charts are missing. There are errors in place of them:

No available data for block scatterplot_overview | path: surveyApi.survey.scatterplot_overview | type: ToolsScatterplotBlock
No available data for block all_sections_tools_cardinality_by_user | path: surveyApi.cardinality | type: AllSectionsToolsCardinalityByUserBlock

Expected

Charts displaying normally.

ReScript and Reason

Why Reason is listed as a JavaScript Flavor? Reason is not a JavaScript flavor anymore, it's just a syntax for OCaml that used to be the default option to write JavaScript applications with BuckleScript (a tool that compiles OCaml to JavaScript).
Since BuckleScript was rebranded to ReScript and created its language I think the answers corresponding to "Reason" should be considered as ReScript, because Reason now is focused on the native side and all developers that are using "Reason" to write JavaScript applications are using ReScript. What do you think?

Do not use "circle size" visualizations to convey proportion

From the State of CSS 2021 results:

image

This kind of thing is actually a big antipattern in dataviz. First any data visualization that requires humans to compare areas is already at a disadvantage because humans are pretty bad at comparing areas. But the "circle size" visualization is especially problematic:

A quick demonstration:
image

Is your intuition about these relationships the same as the numbers displayed?

I would suggest using pie charts instead. The argument about areas still applies, but I think pie charts are fine for communicating a proportion of one variable, they start breaking down when you need to show multiple slices. And they do not suffer from the mismatched percentage shown and proportion of area that "circle size" visualizations have.

Results are not colorblind friendly

I'm moderately green-weak colorblind.

Four of the following categories are indistinguishable to me:

20220219_17h37m51s_grim

  • The colors for Back-end & Build Tools are barely distinguishable when next to each other. They're not so when apart.
  • The same goes for Mobile and Monorepo.

[State of CSS] Remove explanatory code comments for :has() and :where()

:has() 2022
CODE EXAMPLE

/* Matching <a> elements that directly contain an <img> */
a:has(> img)

Similarly for :where()

It seems to me the feature shouldn't be explained as people are more likely to select "Know what it is, but haven't used it" instead of "Never heard of it/Not sure what it is".

Generate data with i18n labels

Exploiting public data can be tricky without labels, it could be useful to also export a key/translation mapping as csv for each language alongside the public data. Or at least the English version within the data.

Rankings confusingly appear to go down despite having increased

Hi, thanks for all the cool charts!

This positioning on the front-end frameworks satisfaction rankings looks a bit odd:

Screenshot 2022-02-18 at 18 44 03

Svelte's ranking has increased from 89% to 90%, but its trajectory to 2021 is shown as downwards because of the appearance of Solid above it.

Here's a similar thing happening on the build tools listing, because of Vite appearing at 98% over esbuild at 96% - which has actually increased from 94%.

Screenshot 2022-02-18 at 18 43 09

If the years weren't top-aligned it would prevent this from happening.

State of GraphQL 2022 Preliminary Discussion

I'm exploring the idea of doing a "State of GraphQL" survey, so I'm opening this thread to gather feedback.

  • If you use GraphQL, which questions would you hope the survey would answer?
  • Which areas should it cover?
  • Which features/architecture patterns/libraries/services should be included?
  • What other questions can we ask to get a better picture of the GraphQL community?
  • What are the main current GraphQL pain points we should ask about?
  • What are the main currently missing features we should ask about?

Let me know here!

New Features/Libraries Question Format (with Inline Follow-Up)

Feature

Screen Shot 2022-07-16 at 11 18 12

Library

Screen Shot 2022-07-16 at 11 18 18

What's New

  • Ability to group options together for added clarity.
  • Any top-level option has the ability to trigger an inline follow-up question when checked.
  • Follow-up questions support an "Other…" free-form field
  • Note: avoid triggering follow-ups for too many top level options to avoid increasing survey length too much.

[State of CSS] Titles are slow to load or sometimes get stuck

I noticed that some section titles start out showing something like "Css2022__something__something" and second or so later change to the proper title. The section title "Css2022__resources__podcasts_css__others" under "Resources" didn't change at all.

I see an error in the console, not sure if it's related:

2instrument.js:109 currentFocusIndex was not null, but currentTabindex was null during keypress
(anonymous) @ instrument.js:109

Install mongoexport in surveyadmin deployment

It seems that relying on a custom CLI tool or binary requires a custom Docker image on Render.com.

Current process:

  • Run the app locally, but with MONGO_URI aiming at the prod db (careful on that)
  • Connect as admin /!\ when connecting via anonymous login, it will find based on emailHash, but via password login, via pure email => I need to clean this part up a bit
  • Export from your own machinge

Can´t see results

Tried to see the back-end results but it sais that o is undefined. It's the same for front-end and all the others on the tab "Libraries"

image

The monorepo.tools should be a recommended resource

On the report part related to Monorepo tools (https://2021.stateofjs.com/en-US/libraries/monorepo-tools/), the recommended resources features outdated training from Frontend Masters.

I believe the link to monorepo.tools, de facto most up-to-date overview of the modern monorepo solutions, maintained by monorepo creators themselves provide more relevant information.

Unless these are paid adverts, in which case the "Recommended resources" is a bit misleading.

State of JS 2021 Outline Discussion

(Outline WIP available here).

Deletions

The two big changes I'm planning are to remove the "JavaScript Flavors" and "Data Layer" sections.

JavaScript Flavors

TypeScript has almost 100x the usage of any other options, so setting aside a whole section for this category feels a bit superfluous at this point. Technologies like Reason or Elm are still very interesting but maybe they have their place in a more targeted survey?

Data Layer

This has always been a somewhat nebulous category, and would probably be better served by library-specific surveys (how to manage state in React, how to manage state in Svelte, etc.).

Features

  • async_await
  • promises
  • destructuring
  • spread_operator
  • arrow_functions
  • local_storage
  • fetch

(These are removed because they're pretty much at 100% usage and/or awareness so it doesn't make a ton of sense to keep asking about them)

  • decorators (not actually implemented yet so not the best section for them?)

Libraries

  • koa
  • meteor
  • hapi

Other Deletions

  • Text Editors

Additions

Since the deletions free up space, maybe we could add a new category such as Animations and Graphics? Or else just keep the survey shorter.

Features

  • numeric_separators
  • replace_all
  • match_all
  • logical_assignment
  • promise_any
  • array_at
  • top_level_await
  • page_visibility
  • broadcast_channel
  • geolocation
  • file_system_access
  • web_share

Libraries

  • Solid
  • Redwood
  • Blitz
  • Astro
  • Eleventy
  • Sveltekit
  • Remix
  • Vite
  • WMR
  • Turborepo
  • Tauri
  • pnpm
  • Vitest

I also want to open the discussion regarding which features/browser APIs should be included.

State of GraphQL 2022 Outline Discussion

Here is the outline for the survey in markdown format. I coded up the export pretty quickly so it's a bit rough, feel free to disregard any weirdness of things that don't make sense. I will also deploy a preview of the actual survey soon. Feedback welcome!


[Updated May 12 2022]

State of GraphQL 2022

Language

The vocabulary of JavaScript.

features_intro

Custom Directives

  • Never heard|Know what it is|Used it

Custom Scalars

  • Never heard|Know what it is|Used it

Fragments

  • Never heard|Know what it is|Used it

Unions

  • Never heard|Know what it is|Used it

Interfaces

  • Never heard|Know what it is|Used it

Directives

Augmenting your GraphQL fields.

@Skip

  • Never heard|Know what it is|Used it

@include

  • Never heard|Know what it is|Used it

@deprecated

  • Never heard|Know what it is|Used it

@SpecifiedBy

  • Never heard|Know what it is|Used it

@defer

  • Never heard|Know what it is|Used it

@stream

  • Never heard|Know what it is|Used it

Security & Performance

Making your API more robuts.

Persisted Queries

  • Never heard|Know what it is|Used it

Query Timeouts

  • Never heard|Know what it is|Used it

Query Rate Limiting

  • Never heard|Know what it is|Used it

Query Depth Limiting

  • Never heard|Know what it is|Used it

Query Cost Analysis

Analyzing a set of factors before deciding whether to allow a query.

  • Never heard|Know what it is|Used it

Disabling Introspection

  • Never heard|Know what it is|Used it

IP Allow-listing

Only allowing a predefined set of IP addresses to access an API.

  • Never heard|Know what it is|Used it

Requiring Authentication

Require authentication before any API access.

  • Never heard|Know what it is|Used it

Other Features

Other technologies and patterns

GraphQL Subscriptions

  • Never heard|Know what it is|Used it

Live Queries

  • Never heard|Know what it is|Used it

Apollo Federation

  • Never heard|Know what it is|Used it

Schema Stitching

  • Never heard|Know what it is|Used it

GraphQL Servers

How you power your API.

tools_intro

Apollo Server

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Yoga

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

GraphQL.js

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Helix

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Express-GraphQL

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Mercurius

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Hot Chocolate

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

GraphQL Java

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

DGS

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Strawberry

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Sangria

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

graphql_servers

graphql_servers

  • Very Unhappy
  • Unhappy
  • Neutral
  • Happy
  • Very Happy

GraphQL Clients

Querying your API.

Apollo Client

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

URQL

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

React Query

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Relay

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Apollo iOS

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

SwiftGraphQL

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Apollo Kotlin

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

GraphQL Hooks

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

graphql-request

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

no_dedicated_client

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

graphql_clients

graphql_clients

  • Very Unhappy
  • Unhappy
  • Neutral
  • Happy
  • Very Happy

API Generators

ORMs, CMSes, and other tools that create an API for you.

PostGraphile

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Hasura

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

GraphCMS

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

DatoCMS

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Sanity

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

WPGraphQL

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

WunderGraph

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Fauna

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Dgraph

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

GraphQL Editor

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Strapi

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

AWS AppSync

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Contentful

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Pothos

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

api_generators

api_generators

  • Very Unhappy
  • Unhappy
  • Neutral
  • Happy
  • Very Happy

Code Generators

Generators, schema builders, and other libraries that write part of your code for you.

GraphQL Zeus

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Genql

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

GraphQL Code Generator

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Nexus

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

TypeGraphQL

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

graphql_code_generators

graphql_code_generators

  • Very Unhappy
  • Unhappy
  • Neutral
  • Happy
  • Very Happy

GraphQL IDEs

Apps and services that help you query your GraphQL API.

GraphiQL

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

GraphQL Playground

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Apollo Studio

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Altair

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Insomnia

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Postman

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

GraphQL Editor

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

Apollo Sandbox

  • Never heard|Would like to learn|Not interested|Would use again|Would not use again

graphql_ides

graphql_ides

  • Very Unhappy
  • Unhappy
  • Neutral
  • Happy
  • Very Happy

Usage

How you use GraphQL.

GraphQL Experience

How long have you been using GraphQL for?

  • Less than one year
  • 1 to 2 years
  • 3 to 5 years
  • 6 to 10 years

API Types

What kind of APIs do you use GraphQL for?

  • Publicly-available APIs intended for third-party developers
  • APIs intended for your own website and/or apps
  • Private APIs for internal usage

API Clients

What kind of clients connect to your APIs?

  • Browsers
  • Native Mobile Apps
  • Native Desktop Apps
  • Other Servers

Data Sources

Which kind of data sources are consumed by your GraphQL APIs?

  • Static files (YAML, Markdown, etc.)
  • Databases
  • Spreadsheets
  • CMSes
  • REST APIs
  • Other GraphQL APIs

Code Generation Type

If you use code generation, which approaches do you tend to prefer?

  • Code-first (JS, TS, JSON, etc.)
  • GraphQL Schema-first
  • Database-first

Code Generation Target

Which part(s) of your codebase do you generate programatically?

  • GraphQL schema
  • Non-GraphQL (e.g. TypeScript) typings
  • Server resolvers
  • Client-side fragments and/or queries
  • Client-side query code (e.g. React hooks)

Industry Sectors

Which industry sector(s) are you using GraphQL in?

  • Ecommerce & Retail
  • News, Media, & Blogging
  • Healthcare
  • Finance
  • Programming & Technical Tools
  • Social Media
  • Marketing/Sales/Analytics Tools
  • Education
  • Real Estate
  • Entertainment
  • Government
  • Consulting & Services

Other Server Languages

Which language(s) do you use to write your GraphQL back-ends?

  • JavaScript
  • TypeScript
  • PHP
  • Ruby
  • Python
  • Go
  • Rust
  • Java
  • C/C++
  • Objective-C
  • Scala
  • Swift
  • C#
  • Haskell
  • OCaml
  • Dart
  • Kotlin
  • Elixir
  • Clojure
  • Julia

Web Frameworks

Web frameworks that you use in conjunction with GraphQL.

  • Gatsby
  • Redwood
  • Next.js
  • Remix
  • Nuxt
  • SvelteKit
  • Create React App

Databases

Which databases do you use in conjunction with GraphQL?

  • MySQL
  • SQLite
  • PostgreSQL
  • Neo4j
  • Redis
  • MongoDB
  • ElasticSearch
  • DynamoDB

GraphQL Strong Points

What are the main reasons why you enjoy using GraphQL?

  • Avoiding Over-fetching
  • Introspection & API Documentation
  • Tooling & Ecosystem
  • Type-checking
  • Combining Different APIs
  • Aggregating Requests
  • Community
  • Fragment Colocation

GraphQL Strong Points

What are the main reasons why you enjoy using GraphQL?

GraphQL Pain Points

What are your main pain points when using GraphQL?

  • Performance
  • Security
  • Combining Different Schemas
  • API Versioning
  • File Upload
  • Testing
  • Error Handling
  • Client-side Caching

GraphQL Pain Points

What are your main pain points when using GraphQL?

Other GraphQL Tools

  • Envelop
  • GraphQL Mesh
  • GraphQL Shield
  • Dataloader
  • options.other_tools.datasources
  • GraphQL Voyager
  • graphqurl
  • GraphCDN
  • Apollo Client Devtools
  • GraphQL Hive
  • GraphQL Inspector
  • GraphQL Scalars
  • GraphQL Config
  • GraphQL Modules
  • Prisma

state_of_graphql

  • Very Unhappy
  • Unhappy
  • Neutral
  • Happy
  • Very Happy

Resources

What {topic} resources do you consult?

First Steps With GraphQL

When first starting out, how did you initially learn GraphQL?

  • Books
  • Videos & screencasts
  • Online courses (free)
  • Online courses (paid)
  • School & higher education
  • Podcasts
  • Coding bootcamp
  • On-the-job training
  • Mentoring
  • Self-directed learning (Google, Stack Overflow, etc.)

Blogs & Magazines

Which blogs/magazines/etc. do you read?

Sites & Courses

Which sites/courses/etc. do you consult?

Podcasts

Which programming-related podcasts do you listen to?

Other Surveys

Which other developer surveys do you participate in?

  • JetBrains State of Developer Ecosystem
  • Stack Overflow Annual Developer Survey
  • CodinGame Developer Survey
  • Design Tools Survey
  • Postman State of the API Report

People

People you read, follow, or just want to highlight.

About You

Let's get to know the real you.

Age

How old are you, in years?

  • Under 10 years old
  • 10-18 years old
  • 18-24 years old
  • 24-34 years old
  • 35-44 years old
  • 45-54 years old
  • 55-64 years old
  • 65 years or older

Years of Experience

How long have you been working or studying in this field, in years?

  • Less than one year
  • 1 to 2 years
  • 2 to 5 years
  • 5 to 10 years
  • 10 to 20 years
  • More than 20 years

Company Size

How big is your company, in number of employees?

  • One employee
  • 1 to 5 employees
  • 5 to 10 employees
  • 10 to 20 employees
  • 20 to 50 employees
  • 50 to 100 employees
  • 100 to 1000 employees
  • More than 1000 employees

Yearly Salary

Your yearly salary in U.S. dollar.

  • I work for free
  • $0k-$10k
  • $10k-$30k
  • $30k-$50k
  • $50k-$100k
  • $100k-$200k
  • More than $200k

Higher Education Degree

Do you have a higher education degree?

  • No
  • Yes, in a field related to my current profession
  • Yes, but in a field unrelated to my current profession

Your Country or Region

Where do you currently reside?

list of countries goes here

Gender

Which of the following options describes you, if any? Please pick one.

  • Woman
  • Man
  • Non-Binary or Gender Non-Conforming
  • Not Listed

Race & Ethnicity

Which of the following options describe you, if any? Please check all that apply.

  • Black or of African descent
  • East Asian
  • Hispanic or Latino/Latina/Latinx
  • Middle Eastern
  • Multiracial
  • Native American, Pacific Islander, or Indigenous Australian
  • South Asian
  • South East Asian
  • White
  • Not listed

Disability Status

Which of the following disabilities do you experience, if any? Please check all that apply. Note that this can include temporary disabilities or injuries.

  • Visual impairments

  • Hearing impairments

  • Mobility impairments

  • Cognitive impairments

  • Not Listed

How did you find out about this survey?

stateOfCSS mailto without email

Hi,
I would like to contact the team after reading the survey, but the link at the bottom has a mailto without any email address inside.

mailto:?subject=The State of CSS 2021 Survey Results&body=Here are some interesting survey results: https://2021.stateofcss.com

*I didn't find the stateOfCSS2021 to publish this issue ( I have just clicked at the bottom link of the website "Found a bug? Leave an issue" ).

Context issue with Astro codebase

Astro codebase: https://github.com/StateOfJS/Monorepo/tree/main/homepage

Context defined here: https://github.com/StateOfJS/Monorepo/blob/main/homepage/src/helpers/i18nContext.tsx

Provider called here: https://github.com/StateOfJS/Monorepo/blob/main/homepage/src/layouts/DefaultLayout.astro#L42

Context used here via a hook: https://github.com/StateOfJS/Monorepo/blob/main/homepage/src/components/T.tsx#L15

Problem: when using the context in a component, only the default value of the context is read, the context is never updated with the value passed to the provider.

chart title is short in the Japanese version

This is the CSS library evaluation chart in the Japanese version:

Screenshot

And here's the same section in the English version:

Screen Shot 2022-03-06 at 12 50 39

Somehow the widths of titles in the Japanese version is about half the size of those in the English version. Since the width is narrower, some titles (in this case, "ドキュメンテーション", "アクセシビリティ", and "ユーザーベース") are chopped.

There might be no choice if the strings are too large... but unlike the English version, those Japanese title are not truncated with ellipsis, and are right-aligned with no scrolling mechanism. So there's no way to see the start of the string, making it hard to get the meaning of those long titles.

Percentage of respondents that knew about each feature?

This may just be me missing something, but looking at the CSS feature results from 2021 I cannot tell what percentage of respondents knew about each feature. My understanding is that the circles are showing essentially this percentage:

                      People using the feature
----------------------------------------------------------------
(People using the feature + People that knew about the feature)

The overlay provides more data, but still about usage:

image

What I was interested in was this percentage:

People that knew about the feature + People using the feature
----------------------------------------------------------------
                       Total respondents

Is this shown anywhere?

Also, the percentage of total respondents that use the feature would IMO be more useful than the percentage of people who use it over the percentage of people who know about it. If a feature is known by 1% of developers but almost everyone who knows about it uses it that gives us a huge usage percentage which does not actually reflect how widely the feature is used at all.

Chart Sponsoring Feature

Leave your feedback or ask your questions regarding the chart sponsoring/donations feature here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.