This is a small toy project that I prepared to give some exercises to new colleagues who are approaching web development for the first time, so I can give them a starting point that allows me over time to be able to explain everything to them.
This project integrates the following technologies:
- Frontend: Next.js (App Router), TailwindCSS, Shadcn, TypeScript, Redux Toolkit, i18n.
- Backend: Fastify, Drizzle ORM, Pino, Swagger, WordPress.
- Infrastructure: Docker, Traefik, Valkey.
- Database: PostgreSQL, MySQL(for WordPress).
- Monitoring: ELK.
- Linting code: BiomeJS.
This setup provides a ready-to-use playground for exploring web development concepts and workflows, from frontend UI design to backend services and database interactions.
-
Create Environment File:
- Create a
.envfile in the root directory by renaming.env.placeholderto.env. - Fill in the necessary environment variables in the
.envfile.
- Create a
-
Start the Project:
- To launch the project using Docker, run the following script:
./start.sh
This script will handle all necessary setup and start the services in a containerized environment.
-
Populate the Database:
- After starting the project, populate the database by running:
./populate.sh
After starting the project, the following URLs will be available:
- Frontend (Next.js): http://localhost
- Backend API (Fastify): http://localhost/api
- Swagger UI: http://localhost/swagger-ui
- Traefik Dashboard: http://localhost:8080
- Elasticsearch: http://localhost:9200
- Kibana: http://localhost:5601
- WordPress: http://localhost:7000
The following features and examples are not yet implemented in the current version but can serve as exercises or extensions for developers:
-
Transaction Example
- Implement an example of database transactions using Drizzle ORM transactions.
-
Backoffice Dashboard
- Create a functional backoffice dashboard with features like user management, analytics, or content control.
This starter project is intended to evolve with new tools and features. Some potential future enhancements include:
- Integrating CI/CD workflows.
- Adding unit and integration testing.
- Expanding backend functionalities (e.g., file uploads, advanced authentication).
- Enhancing Docker configuration for production-ready deployment.
Contributions are welcome! If you'd like to add features, fix bugs, or enhance the documentation, feel free to fork the repository and submit a pull request.
This project is licensed under the MIT License. Feel free to use, modify, and distribute as needed.