Motivation :star:
GraphQL first full-stack starter kit with Node, React. Powered by TypeScript
README
### Motivation :star:
Setting up boiler plates when starting new projects is tedious sometimes and I often found myself setting it up from scratch ๐ฅฑ
Hence I made this starterkit following some of the best patterns and practices I learnt from some of the larger codebase and fantastic developers I've had a chance to work with ๐
The main purpose of this repository is to provide a scalable "batteries included" full stack starterkit which follows good architecture patterns (might be opinionated) and code decoupling which becomes significant as the project grows or new developers are onboarded
#### Features
- **All in Typescript**
Because TypeScript is awesome, and types are important ๐
- **GraphQL First**
This starterkit is built with graphql first approach using the [Apollo](https://www.apollographql.com/) platform
- **Includes CI**
CI is integral part of any project. This starterkit includes `Github Actions` by default. PR's for integration with any other providers are welcome ๐
- **Docker Support**
You can also use docker to develop and run your applications
- **Testing Focused**
This project uses [Jest](https://jestjs.io/) for testing framework and comes with sample tests which are easy to extend
- **Prisma**
[Prisma](https://www.prisma.io/) is the ORM being used for [PostgreSQL](https://www.postgresql.org/). Feel free to submit a PR for any other ORM or drivers you'd like to see here ๐
- **PWA Support**
This starterkit comes with out of the box PWA support
**Please leave a :star: as motivation if you liked the idea :smile:**
### :rocket: Technologies Used
### ๐ Contents
- [Architecture](#architecture)
- [Backend](#backend)
- [Web](#web)
- [Getting started](#getting-started)
- [How to Contribute](#how-to-contribute)
- [License](#license)
### Video Overview
Here's a brief video overview of this project, hope it helps.
[](http://www.youtube.com/watch?v=TgtUhEnW8O4 "Full Stack Starterkit Overview")
Big thanks to [@mikestaub](https://twitter.com/mikestaub) for mentoring me on the lot of the ideas you will come across in this repository. Checkout how he's changing social media with [Peapods](https://peapods.com)
### ๐ญ Architecture
#### Backend
Here is the folder structure for `backend`, it is using `yarn workspaces` which helps us split our monorepo into packages such as DB, GraphQL. Which if required can be made into their own micro services.
```
backend
โโโ build
โโโ config
โโโ logs
โโโ packages
โ โโโ db
โ โ โโโprisma
โ โโโ graphql
โ โ โโโ api
โ โ โโโ schema
โ โ โโโ types
โ โโโ utils
โโโ tests
โ โโโ db
โ โโโ graphql
โโโ index.ts
โโโ package.json
```
##### DB
This workspace package contains the database abstractions. The database stack is [PostgreSQL](https://www.postgresql.org/) as relational database and [Prisma](https://www.prisma.io/) as an ORM, read more about DB package [here](./backend/packages/db/README.md)
##### GraphQL
The GraphQL package is organized as below:
```
graphql
โโโ schema
โ โโโ user
<p style="margin: 0px 10px;">
<a href="mailto:[email protected]">๐ผ Hire Me</a> |
<a href="https://www.paypal.me/karanpratapsingh">๐บ Donate</a>
</p>
</p>
