Setting up a new project is time-consuming. The purpose of this project is to make it effortless with state-of-the-art technology and tooling.
In short - it's a monorepo with Node.js backend, GraphQL API, and React frontend. The whole stack is with TypeScript.
- Node.js with TypeScript
- GraphQL Yoga Server API
- Prisma ORM with PostgreSQL database
- Winston/Grafana Loki logging
- ESBuild bundling
- React with TypeScript
- Apollo Client with cache
- Tailwind CSS
- Vite building
- GitHub Actions CI/CD
- Prometheus metrics
- Grafana monitoring
- Sentry error monitoring
- Railway hosting
- PNPM package manager
- Jest testing
- ESLint linting
- Turborepo caching
- Install Docker Compose
- Install dependencies in all projects:
pnpm install --recursive - Build types from GraphQL schema:
pnpm run graphql-codegen - Create the file
server/.env.developmentand add the fields fromserver/.env.example - Run DB:
docker-compose up db - Migrate DB schema:
npx prisma migrate devinserver - Generate types:
npx prisma generateinserver - Run server:
pnpm run dev --prefix server
- Create the file
app/.env.developmentand add the fields fromapp/.env.example: - Run app:
pnpm run dev --prefix app
- Edit DB schema in
server/prisma/schema.prisma - Migrate DB schema by running
npx prisma migrate devinserver - Generate types by running
npx prisma generateinserver - Open DB admin panel by running
npx prisma studioinserver
- Generate types by running
pnpm run graphql-codegen - Edit GraphQL Schema in
server/src/schema.graphql - Open GraphiQL in
localhost:4000while running server
- Run
pnpm run extract-translationsinapp - Edit json files in
app/src/assets/translations
- Run tests with
pnpm run test --recursive
- Configure deploys in
server/railway.tomlandapp/railway.toml - Setup environment variables based on
.env.examplein each folder - Add
RAILWAY_TOKENto GitHub actions secret
- Setup Turborepo docker image
- Add
TURBO_TOKENto GitHub actions secret - Edit
.turbo/config.json