🚧 WORK IN PROGRESS 🚧
Please note that this project is currently under development. Functionality may change and there may be many bugs! 🐜
Turborepo Starter with Zodios 🧰
This is an starter Turborepo enhanced with Zodios, a REST API toolbox that offers end-to-end type safety.
Backend:
- Typescript 🟦
- Zodios 🛠️
- Express 🚆
- Zod 📝
- Supabase 🗃️
Frontend:
- React 🌐
- Vite ⚡
- React Query 📊
- Mantine 🎨
- Zodios 🛠️
Zodios allows you to create a REST API with a clean, intuitive, and declarative syntax. With Zodios, you can develop an Express application with full type safety and autocompletion, making your coding experience more efficient and error-free. Unique to Zodios, it guarantees that all your parameters and responses are fully typed. By default, they are also validated at runtime to prevent unrecoverable errors.
https://www.zodios.org/
This project is a backend built with TypeScript. It provides a suite of functionalities and services for an unspecified application. The author is Carlos Ricardo Ziegler.
- TypeScript: The project is built in TypeScript, a statically typed version of JavaScript.
- Prisma: Used for ORM, with dedicated scripts for syncing database schemas and generating Prisma client.
- Express.js: This project uses Express.js as its web server framework.
- Docker: Used for services orchestration.
- Redis: Utilized for session management.
- Supabase: Utilized for providing database, authentication, and storage functionalities.
- Zod & Zodios: Used for data validation. Zodios is a REST API toolbox with end-to-end typesafety. It offers a clean, intuitive, and declarative syntax for creating REST APIs. Its sub-packages like
@zodios/core, @zodios/plugins, @zodios/express, and @zodios/openapi are utilized in this project.
- Vitest: Utilized for testing.
- Eslint and Prettier: Utilized to maintain code quality and consistency.
To run this project on your local machine, follow the steps:
- Install the project dependencies with
npm install or yarn.
- To run the server in development mode, use the command
npm run dev or yarn dev. This will start the server and automatically restart whenever there are changes to .ts files.
- To run the tests, use
npm run test or yarn test. To run tests with coverage, use npm run test:coverage or yarn test:coverage.
- To lint the code, use
npm run lint or yarn lint. To auto-fix linting problems, use npm run lint:fix or yarn lint:fix.
- To format the code with Prettier, use
npm run format or yarn format.
- To build the project for production, use
npm run build or yarn build. This will generate an optimized version of the project in the dist folder.
- To start the server in production, use
npm run start or yarn start.
This project has support for Docker and Docker Compose. To start the services using Docker Compose, use npm run services:up or yarn services:up. To stop the services, use npm run services:stop or yarn services:stop.
HOSTNAME=localhost
PORT=5001
SUPABASE_PROJECT_ID=
SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
SUPABASE_URL=
SUPABASE_JWT=
DATABASE_URL=
REDIS_URL=
This is a frontend project built with React.js and TypeScript. It provides a user interface for an unspecified application.
- React.js & TypeScript: This project is built with React.js, a popular JavaScript library for building user interfaces, and TypeScript, a statically typed version of JavaScript.
- Vite: This project uses Vite for its build tool and dev server.
- React Query & Tanstack: Used for data fetching, caching, synchronization and updates in React applications.
- React Router Dom: Used for managing routing in the React app.
- React Hook Form: Used for managing form state and validation.
- Zod & Zodios: Used for data validation. Zodios is a REST API toolbox with end-to-end typesafety, utilized in this project through
@zodios/core and @zodios/react.
- Mantine: Used for providing UI components.
- Eslint: Utilized to maintain code quality and consistency.
- React Testing Library: Utilized for unit and integration testing.
To run this project on your local machine, follow the steps:
- Install the project dependencies with
npm install or yarn.
- To run the server in development mode, use the command
npm run dev or yarn dev. This will start the dev server with hot module replacement.
- To lint the code, use
npm run lint or yarn lint.
- To build the project for production, use
npm run build or yarn build. This will generate an optimized version of the project ready for deployment.
- To preview the build, use
npm run preview or yarn preview.
- TypeScript - JavaScript with syntax for types. Website
- Prisma - Next-generation Node.js and TypeScript ORM. Website
- Express.js - Fast, unopinionated, minimalist web framework for Node.js. Website
- Docker - Empowering App Development for Developers. Website
- Redis - In-memory data structure store. Website
- Supabase - Open Source Firebase Alternative. Website
- Zod - TypeScript-first schema declaration and validation. GitHub by Colin Hacks.
- Zodios - REST API toolbox that offers end-to-end type safety. Website
- Vitest - A new breed of test runner. GitHub by Evan You.
- Eslint - Pluggable JavaScript linter. Website
- Prettier - Opinionated Code Formatter. Website
- React.js - A JavaScript library for building user interfaces. Website
- Vite - Next Generation Frontend Tooling. Website by Evan You.
- React Query - Hooks for fetching, caching and updating asynchronous data in React. Website by Tanner Linsley.
- React Router Dom - Declarative routing for React. Website
- React Hook Form - Performant, flexible and extensible forms with easy-to-use validation. Website
- Mantine - A fully featured React UI library. Website
- React Testing Library - Simple and complete testing utilities that encourage good testing practices. Website