Giter VIP home page Giter VIP logo

prisma-examples's Introduction


Prisma Examples

Ready-to-run Prisma example projects 🚀

Website   •   Docs   •   Blog   •   Slack   •   Twitter   •   Demo videos


This repository contains a number of ready-to-run example projects demonstrating various use cases of Prisma. Pick an example and follow the instructions in the corresponding README.

You can also find links to real-world and production ready examples further below in this README.

Are you missing an example? Please feel free to open an issue (read the contribution guidelines for more info).

TypeScript

Fullstack

Demo Description
rest-nextjs-api-routes Next.js app with a REST API (using Next.js API routes)
rest-nextjs-api-routes-auth Next.js app with a REST API (using Next.js API routes) and authentication (using NextAuth.js)
rest-nextjs-express Next.js app with a REST API (using Express)
rest-nuxtjs Nuxt.js app with a REST API
graphql-nextjs Next.js app with a GraphQL API (using Apollo Server and GraphQL Nexus)
rest-sveltekit SvelteKit app with a REST API
sveltekit SvelteKit app using SvelteKit's actions and load functions
trpc-nextjs Next.js app with tRPC
remix Remix app

Backend only

Demo Description
graphql-apollo-server GraphQL server based on @apollo/server and Nexus Schema
graphql-auth GraphQL server with email-password authentication & permissions
graphql-sdl-first GraphQL server based on GraphQL Yoga
graphql-subscriptions GraphQL server with realtime subscriptions based on apollo-server and Nexus Schema
graphql-typegraphql GraphQL server based on @apollo/server and TypeGraphQL
graphql-typegraphql-crud CRUD GraphQL API based on @apollo/server and TypeGraphQL
graphql-fastify GraphQL server based on Fastify, Mercurius, and the SDL-first approach of graphql-tools
graphql-fastify-sdl-first GraphQL server based on Fastify, Mercurius, and the SDL-first approach of graphql-tools
graphql-hapi GraphQL server based on Hapi and Nexus Schema
graphql-hapi-sdl-first GraphQL server based on Hapi and the SDL-first approach of Apollo Server Integration for Hapi
graphql-nestjs GraphQL server based on NestJS (code-first)
graphql-nestjs-sdl-first GraphQL server based on NestJS and the SDL-first approach of graphql-tools
graphql GraphQL server based on GraphQL Yoga and Pothos
graphql-nexus GraphQL server based on @apollo/server and Nexus Schema
grpc gRPC API including runnable client scripts for testing
postgis-express Demo of spatial queries using Postgis and Express
rest-express REST API with Express
rest-fastify REST API with Fastify
rest-koa REST API with Koa
rest-hapi REST API with hapi
rest-nestjs REST API with NestJS
script Usage of Prisma Client JS in a TypeScript script
testing-express Demo of integration tests with Jest, Supertest and Express

JavaScript (Node.js)

Fullstack

Demo Description
rest-nextjs Next.js app with a REST API (using Next.js API routes)
rest-nuxtjs NuxtJS app with a REST API
rest-sveltekit SvelteKit app with a REST API

Backend only

Demo Description
graphql-apollo-server GraphQL server based on @apollo/server
graphql-auth GraphQL server with email-password authentication & permissions
graphql-sdl-first GraphQL server based on GraphQL Yoga
grpc gRPC API including runnable client scripts for testing
rest-express REST API with Express
rest-fastify REST API with Fastify
rest-koa REST API with Koa
script Usage of Prisma Client JS in a Node.js script

Deployment platforms

The projects in the deployment-platforms directory show what "Prisma Client"-based deployment setups look like for various deployment providers. Learn more about deployment in the Prisma documentation.

Real-world & production-ready example projects with Prisma

  • Inbox Zero: Open source email management tools to reach inbox zero fast
  • NextCRM: An open-source Customer Relationship Management system (CRM)
  • Papermark: An open-source DocSend alternative with built-in analytics and custom domains
  • Hoppscotch: An open-source API development ecosystem
  • FeastQR: An open-source SaaS online menu system for restaurants
  • Formbricks: An open-source survey and experience management tool
  • OpenformStack: An open-source form backend that allows you to collect form submissions without writing any backend code
  • Documenso: An open-source alternative to Docusign
  • abby: An open-source feature flag, remote config and A/B testing platform for developers
  • ghostfolio: An open-source dashboard for your personal finances
  • revert: An open-source unified API to build B2B product integrations
  • Scholarsome: An interactive, studying system
  • Dittofeed: An open-source customer engagement; intuitive marketing tools that scale
  • Trigger.dev: Effortless automation built for developers (Zapier alternative)
  • Webstudio: A NoCode visual design tool for building apps and websites
  • Dyrector: A self-hosted container management platform
  • reduced.to: An open-source link shortener
  • Linen: An open-source alternative to Slack and Discord with lots of great features
  • Coolify: An open-source & self-hostable Heroku / Netlify alternative
  • dub: An open-source link shortener with built-in analytics and free custom domains
  • Umami: A simple, fast, privacy-focused alternative to Google Analytics
  • Rallly: A self-hostable doodle poll alternative (based on Next.js, tRPC, and TailwindCSS)
  • Typebot: A conversational form builder that you can self-host
  • Cal.com: An open-source alternative to Calendly (calender-based event scheduling service)
  • Beam: A simple tool that allows members to write posts to share across your organization (based on Next.js)
  • Dundring: An in-browser training application created to control and track you training with a smart bike trainer
  • Expense.fyi: A tool for tracking and managing expenses
  • Letterpad: A publishing platform for creatives
  • Teable: A no-code real-time database built on Postgres with a simple interface for enterprise-level app development.

Starter kits

  • T3 stack: Starter kit based on Next.js, TypeScript, tRPC, Prisma, Tailwind CSS and NextAuth.js
  • Indie Stack: Remix Stack for deploying to Fly with SQLite, authentication, testing, linting, formatting
  • Blues Stack: Remix Stack for deploying to Fly with PostgreSQL, authentication, testing, linting, formatting

About this repository

The latest branch of this repository contains the examples with the latest stable version of Prisma CLI and Prisma Client (@latest on npm). These dependencies are kept up to date with a GitHub Action workflow, which updates them every time a new version of Prisma is released.

There are also the automated branches dev and patch-dev, which mirror the code from latest (synced via a GitHub Action workflow), but they use the respective development channels of Prisma CLI and Prisma Client from npm instead (@dev and @patch-dev, also updated via a GitHub Action workflow). Thanks to the test coverage of all projects, this can point us to incompatibilities early.

Security

If you have a security issue to report, please contact us at [email protected]

CI status

CI Status Branch
test latest latest
test dev dev
test patch-dev patch-dev
CI Status
keep-prisma-dependencies-updated
keep-dev-branches-in-sync-with-latest

prisma-examples's People

Contributors

2color avatar abhiaiyer91 avatar awesomeobserver avatar baabouj avatar brunocrosier avatar dependabot[bot] avatar infoverload avatar janpio avatar jasonkuhrt avatar jeky1950 avatar jharrell avatar jolg42 avatar marktani avatar matthewmueller avatar mavilein avatar nikolasburk avatar pantharshit00 avatar prisma-bot avatar renovate-bot avatar renovate[bot] avatar ruheni avatar ryands17 avatar schickling avatar shaswatsaxena avatar sorenbs avatar steebchen avatar timsuchanek avatar touratica avatar w0wka91 avatar weakky 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  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

prisma-examples's Issues

node-graphql-auth 'signup' mutation

Signup mutation doesn't work with example in the readme. User will receive error in the Playground because 'name' is a required field.

Two possible solutions:

  1. Change the schema.graphql file's 'User' definition to be:
type User {  
  id: ID!  
  email: String!  
  name: String  
}

-- OR --

  1. Change the README.md example mutation of 'signup' to include a name argument.
mutation {
  signup(name: "Alice" email: "[email protected]", password: "graphql") {
    token
  }
}

Add example for GraphQL-based microservices

I would love to see an example implementing GraphQL-based microservices with different databases and of course using an API gateway as the main entry point for client apps.

I suggest to add it into the official documentation or host it on "examples" folder in this repository.

Go-graphql example docker-compose file & Scaffolding

Hi prisma team, is it possible to put the docker-compose file in the go-graphql example instead of the one with prisma deployed endpoint ? Plus I have a lot of errors with the generated code when switching to my own prisma server with the way you scaffolded it as it is not scaffoled like this with gqlgen init.

go-client error with gqlgen-v

Hi guys, I'm learning graphql so I borrowed a schema from this tutorial and I encountered an error after using the command gqlgen -v

/home/sacha/go/src/prisma-go-hackernews/tmp/resolver.go
/home/sacha/go/src/prisma-go-hackernews/prisma-client/prisma.go:5046:6: VotesParamsExec redeclared in this block
/home/sacha/go/src/prisma-go-hackernews/prisma-client/prisma.go:3250:6: 	other declaration of VotesParamsExec
validation failed: couldn't load packages due to errors: prisma-go-hackernews/prisma-client

Did I miss something specific to prisma datamodel like relations ? Let me know if you have the same error or not, here is my repo to reproduce the error the behavior

P.S. Sorry if I posted my issue in the wrong repo

Remaining Examples

  • flow-graphql
  • flow-script
  • go-graphql
  • go-rest
  • go-raw-db-access [ON HOLD]
  • node-cli-app
  • node-graphql
  • node-graphql-auth
  • node-graphql-auth-advanced (should include permissions-with-shield)
  • node-graphql-subscriptions
  • node-graphql-schema-delegation
  • node-script
  • node-rest-express
  • node-raw-db-access [ON HOLD]
  • typescript-cli-app
  • typescript-graphql
  • typescript-graphql-auth
  • typescript-graphql-auth-advanced (should include permissions-with-shield)
  • typescript-graphql-subscriptions
  • typescript-graphql-schema-delegation
  • typescript-script
  • typescript-raw-db-access [ ON HOLD]

Make examples more reliable

  • Add CI tests for types (#37)

  • Add CI tests for running examples against a real Prisma (say using Prisma+CircleCI) (#37)

  • Make the start command fail, if the type check fails
    -- One known anti-instance for this is flow (there may be more), where yarn start works but yarn flow fails

  • Add prettier lint to all JS based examples by adding it to yarn test

  • One Prisma server for all examples, individual example folders should not have CI code but the circle configuration at the root should cd into the respective folder and execute

  • Ideally, a CI build should run per example, only when files of that examples are changed (can be done later, but we need to persist this in form of a separate issue)

Example - using Prisma Client's $subscribe

Hi,
Could you please provide an example on generating REST api client side subscription using Prisma Client's $subscribe?

I cant figure out a way to properly listen to CRUD events using $subscribe.

const el = await prisma.$subscribe.message().node();
el.next().then(e => console.log(e)); // <-- This only works for the next event, how can i listen to all future events instead?

Error in node-graphql-auth example

Issue

  • Followed the steps to get node-graphql-auth up and running, but upon trying to do mutation signUp, I get the following error:
dyld: lazy symbol binding failed: Symbol not found: __ZN4node19GetCurrentEventLoopEPN2v87IsolateE
  Referenced from: /Users/TD/Documents/Projects/GraphQl/prisma-examples/node-graphql-auth/node_modules/bcrypt/lib/binding/bcrypt_lib.node
  Expected in: flat namespace

dyld: Symbol not found: __ZN4node19GetCurrentEventLoopEPN2v87IsolateE
  Referenced from: /Users/TD/Documents/Projects/GraphQl/prisma-examples/node-graphql-auth/node_modules/bcrypt/lib/binding/bcrypt_lib.node
  Expected in: flat namespace

Hard path in typedefs

typeDefs: './src/schema.graphql',

This causes problems when transpiling the typescript code to another folder like ./dist.

It would be nice to also have the complete story in the examples, i.e., compiling and running the code in production because ts-node is not intended for production.

golang prisma-client access relations in a single object query

Right now, it seems like it's only possible in the golang generated client code to query for an object OR it's relation, not both. This seems possible in the Typescript as such:

const linksByUser: LinkNode[] = await prisma
  .user({ email: "[email protected]" })
  .links()

It would be useful if were possible to get a single object AND a relation(s) in a single query (is this not a main purpose of GraphQL?) rather than just one (the object) or the other (the relation)

Browser?

Is this working also in Browser? I do not see any examples.

Add CI per example

  • Add CI tests for types

  • Add CI tests for running examples against a real Prisma (say using Prisma+CircleCI)

node-graphql-schema-delegation example error 'Cannot read property 'query' of undefined'

I tried to run masters query from node-graphql-schema-delegation example playground but I got this error:

Server is running on localhost:4000
TypeError: Cannot read property 'query' of undefined
    at masters (/home/ubuntu/workspace/prisma-examples/node-graphql-schema-delegation/src/resolvers/Query.js:2:56)
    at resolveFieldValueOrError (/home/ubuntu/workspace/prisma-examples/node-graphql-schema-delegation/node_modules/graphql/execution/execute.js:531:18)
    at resolveField (/home/ubuntu/workspace/prisma-examples/node-graphql-schema-delegation/node_modules/graphql/execution/execute.js:495:16)
    at /home/ubuntu/workspace/prisma-examples/node-graphql-schema-delegation/node_modules/graphql/execution/execute.js:364:18
    at Array.reduce (<anonymous>)
    at executeFields (/home/ubuntu/workspace/prisma-examples/node-graphql-schema-delegation/node_modules/graphql/execution/execute.js:361:42)
    at executeOperation (/home/ubuntu/workspace/prisma-examples/node-graphql-schema-delegation/node_modules/graphql/execution/execute.js:289:122)
    at executeImpl (/home/ubuntu/workspace/prisma-examples/node-graphql-schema-delegation/node_modules/graphql/execution/execute.js:154:14)
    at Object.execute (/home/ubuntu/workspace/prisma-examples/node-graphql-schema-delegation/node_modules/graphql/execution/execute.js:131:229)
    at doRunQuery (/home/ubuntu/workspace/prisma-examples/node-graphql-schema-delegation/node_modules/apollo-server-core/dist/runQuery.js:124:42)

Replace datamodel

The current examples are based on a weird datamodel which looks like the following

type Cat {
  id: ID! @unique
  name: String!
  color: String!
  favBrother: Cat
}

type Master {
  id: ID! @unique
  catz: [Cat!]!
}

I suggest to base it on the following data model instead:

Minimal

type Post {
  id: ID! @unique
  isPublished: Boolean! @default(value: false)
  title: String!
  content: String!
}

Basic

type Post {
  id: ID! @unique
  createdAt: DateTime!
  updatedAt: DateTime!
  isPublished: Boolean! @default(value: "false")
  title: String!
  content: String!
  author: User!
}

type User {
  id: ID! @unique
  email: String! @unique
  password: String!
  name: String!
  posts: [Post!]!
}

This also means the resulting application should be adjusted to match the new datamodel.

Node GraphQL Example, mutation cannot be executed

For the node-graphql example, the createDraft mutation cannot be executed. For example, try to run this mutation:

mutation b {
  createDraft(title: "Title" content: "Content" authorEmail: "[email protected]") {
    id
  }
}

you will get the error message:

{
  "data": null,
  "errors": [
    {
      "message": "No Node for the model User with value '[email protected]' for email found.",
      "locations": [
        {
          "line": 8,
          "column": 3
        }
      ],
      "path": [
        "createDraft"
      ],
      "code": 3039,
      "requestId": "local:api:cjmal9soq000i0b83z8ckqei0"
    }
  ]
}

The reason is that no author exists yet. However, there is no mutation to create a new author either.
This should be cleaned up.

Current workaround: directly connect to the Prisma endpoint and create a new user:

mutation a {
  createUser(data: {
    name: "Nilan"
    email: "[email protected]"
  }) {
    email
  }
}

Then the first mutation works.

go-graphql query, mutation issues

Hey all. After installing successfully the go-graphql example, opening http://localhost:4000 playground i try to create a new "draft":
mutation { createDraft(title:"Test title",content:"Test content",authorEmail:"[email protected]"){ id title content } }
i got the following error in go:
`interface conversion: interface {} is nil, not map[string]interface {}

goroutine 22 [running]:
runtime/debug.Stack(0x1, 0x0, 0x0)
/usr/local/go/src/runtime/debug/stack.go:24 +0xa7
runtime/debug.PrintStack()
/usr/local/go/src/runtime/debug/stack.go:16 +0x22
go-graphql/vendor/github.com/99designs/gqlgen/graphql.DefaultRecover(0x8f02c0, 0xc000213f20, 0x806300, 0xc0001209f0, 0xc000136d90, 0x40d23f)
/home/dan/go/src/go-graphql/vendor/github.com/99designs/gqlgen/graphql/recovery.go:16 +0xa7
main.(*executionContext).FieldMiddleware.func1(0xc000368bb0, 0x8f02c0, 0xc000213f20, 0xc000137900)
/home/dan/go/src/go-graphql/server/generated.go:2461 +0x78
panic(0x806300, 0xc0001209f0)
/usr/local/go/src/runtime/panic.go:513 +0x1b9
go-graphql/vendor/github.com/prisma/prisma-examples/go-graphql/prisma-client.PostExec.Exec(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0003dc7e0, 0x1, 0x1, 0x0, ...)
/home/dan/go/src/go-graphql/vendor/github.com/prisma/prisma-examples/go-graphql/prisma-client/prisma.go:2887 +0x14cf
main.(*mutationResolver).CreateDraft(0xc0001620a0, 0x8f02c0, 0xc000213f20, 0xc0002a6021, 0xa, 0xc0002a6038, 0xc, 0xc0002a6055, 0x16, 0x0, ...)
/home/dan/go/src/go-graphql/server/resolver.go:36 +0x5d2
main.(*executionContext)._Mutation_createDraft.func1(0x8f02c0, 0xc000213f20, 0xc000198030, 0xc000209898, 0x20, 0xc000209890)
/home/dan/go/src/go-graphql/server/generated.go:464 +0x232
go-graphql/vendor/github.com/99designs/gqlgen/graphql.DefaultResolverMiddleware(0x8f02c0, 0xc000213f20, 0xc000507720, 0x8f02c0, 0xc000213f20, 0xc000209900, 0xc000507720)
/home/dan/go/src/go-graphql/vendor/github.com/99designs/gqlgen/graphql/context.go:33 +0x3a
main.(*executionContext).FieldMiddleware(0xc000368bb0, 0x8f02c0, 0xc000213f20, 0x0, 0x0, 0xc000507720, 0x0, 0x0)
/home/dan/go/src/go-graphql/server/generated.go:2465 +0xa1
main.(*executionContext)._Mutation_createDraft(0xc000368bb0, 0x8f02c0, 0xc000213f20, 0xc00012c800, 0xc000213e30, 0x3, 0x3, 0x1, 0xc000507700)
/home/dan/go/src/go-graphql/server/generated.go:463 +0x1b2
main.(*executionContext)._Mutation(0xc000368bb0, 0x8f02c0, 0xc000213e60, 0xc000368800, 0x1, 0x1, 0x7f891d9706c0, 0x0)
/home/dan/go/src/go-graphql/server/generated.go:430 +0x589
main.(*executableSchema).Mutation.func1(0x8f02c0, 0xc000213e00, 0x8272c0, 0x80d801, 0xc0005076e0)
/home/dan/go/src/go-graphql/server/generated.go:390 +0x61
go-graphql/vendor/github.com/99designs/gqlgen/graphql.DefaultRequestMiddleware(0x8f02c0, 0xc000213e00, 0xc0005076e0, 0xc000142c40, 0xc000209be0, 0x42b072)
/home/dan/go/src/go-graphql/vendor/github.com/99designs/gqlgen/graphql/context.go:41 +0x3a
main.(*executableSchema).Mutation(0xc000150000, 0x8f02c0, 0xc000213e00, 0xc0003dc700, 0xc000213e00)
/home/dan/go/src/go-graphql/server/generated.go:389 +0xd8
go-graphql/vendor/github.com/99designs/gqlgen/handler.GraphQL.func1(0x8efec0, 0xc00048e2a0, 0xc000140c00)
/home/dan/go/src/go-graphql/vendor/github.com/99designs/gqlgen/handler/graphql.go:255 +0x562
net/http.HandlerFunc.ServeHTTP(0xc000119110, 0x8efec0, 0xc00048e2a0, 0xc000140c00)
/usr/local/go/src/net/http/server.go:1964 +0x44
net/http.(*ServeMux).ServeHTTP(0xbb6140, 0x8efec0, 0xc00048e2a0, 0xc000140c00)
/usr/local/go/src/net/http/server.go:2361 +0x127
net/http.serverHandler.ServeHTTP(0xc0001284e0, 0x8efec0, 0xc00048e2a0, 0xc000140c00)
/usr/local/go/src/net/http/server.go:2741 +0xab
net/http.(*conn).serve(0xc000150280, 0x8f0200, 0xc0001427c0)
/usr/local/go/src/net/http/server.go:1847 +0x646
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2851 +0x2f5
`
I thought that the fact that the user email did not exist, so i went to my prisma endpoint and create a user with that email successfully, and also create a test draft in the same prisma endpoint. Querying the playground for the draft gave me an empty response:

`{
drafts{
id
title
}
}

{
"data": {
"drafts": []
}
}
`
I have go 1.11 installed, prisma 1.17 and latest graph-cli

Cannot query field 'createdAt' on type 'User'.

Hello,

I cloned this repo a little over an hour ago to play around with authentication. Specifically, I cloned the typescript-graphql-auth repo. Running it out-of-the-box with the commands specified in the README works fine, but when I try to run the signup mutation from the README

mutation { signup(name: "Alice", email: "[email protected]", password: "graphql") { token } }

I get the following error:

Error: Cannot query field 'createdAt' on type 'User'. (line 4, column 5): createdAt ^ at BatchedGraphQLClient.<anonymous> (MY_PATH\typescript-graphql-auth\node_modules\http-link-dataloader\src\BatchedGraphQLClient.ts:74:13) at step (MY_PATH\typescript-graphql-auth\node_modules\http-link-dataloader\dist\src\BatchedGraphQLClient.js:40:23) at Object.next (MY_PATH\typescript-graphql-auth\node_modules\http-link-dataloader\dist\src\BatchedGraphQLClient.js:21:53) at fulfilled (MY_PATH\typescript-graphql-auth\node_modules\http-link-dataloader\dist\src\BatchedGraphQLClient.js:12:58) at process._tickCallback (internal/process/next_tick.js:68:7)

I'm thinking this must be an issue with the codebase rather than something I've configured, since I've configured essentially nothing.

Missing examples

The following examples should be added for each language:

  • GraphQL server with subscriptions
  • Raw DB access

ctx and Prisma instance question

Hi great repo, 1.17 looks fantastic!

I have a real question: why do you attach prisma to context instead of doing a regular import of the instance?

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.