demo-project
demo-project copied to clipboard
Full-stack TypeScript application
Demo-Project: Full-stack TypeScript Application
Status: On hold until refactor using Nest

A demo project to showcase different technologies and how they work together. The ultimate goal is to have a full-stack, production-ready application.

You can use the setup.sh script to run it locally.
The goal for this project is to be a "domain driven" starter that will help you bootstrap a new application in seconds and just work your business logic instead of all the bootstrapping.
Inspired by ts-app, this project aims to be a little lighter version of that project, with clearer separation of frontend and backend code. And a bigger focus and metrics and monitoring.
Where do I start
You can start by running:
sh ./setup.sh
You can also start the project locally:
yarn dev
After you finish you can clean your setup with:
sh ./clean.sh
Status
Work in progress.
System Requirements
Technologies Used
-
Backend
- Node.js
- Express
- tsoa
- Generates Express Routes from TypeScript controllers
- Generates OpenAPI ("Swagger") specification, enabling automatic documentation
- SQLite as a local development database
- PostgreSQL as RDBMS
- TypeORM for code-first database migrations and ORM queries
- Redis for caching
-
Developer environment
- docker and docker-compose for non-Node.js project dependencies
- VSCode, eslint and prettier for a consistent development experience
- A setup script
setup.shto help you get started in a guided way.
-
Frontend
-
Testing
- TBD
Todo
A high-level list of
- [x] SQLite in dev
- [x] PG in docker
- [x] Redis for cache
- [x] Setup script
- [x] Setup initial DB data in a migration
- [x] Prometheus for metrics
- [x] Grafana for monitoring
- [x] Frontend: CRA for client
- [x] Frontend: validation using Yup, mui-rff
- [x] Cache redis on get /users query
- [x] Kafka producer for real-time events
- [x] Nginx for web-server
- [x] Kafka consumer for real-time events
- [x] Web-Socket
- [x] Start-up script
- [ ] Refactor backend to use Nest
- [ ] Refactor frontend to use Next (or remix)
- [ ] Secure Nginx
- [ ] Generate client from swagger.json
- [ ] Deploy on a production environment (OVH, GCP, AWS..)