Presentation
Portfolio
Background
I built this project entirely from scratch. I structured it as an NX monorepo to manage the whole system, though honestly, I might rethink that decision next time since updates tend to cause new problems. For the backend, I set up a Docker Compose environment running PostgreSQL, Redis, and Nginx alongside my API. The API itself is built with NestJS using the Fastify adapter and TypeORM for database management.
For the frontend, I built both the main website and the admin dashboard within a single Next.js project. The entire platform is fully localized in English and Arabic, and the website also functions as a Progressive Web App (PWA) for mobile devices. The system is highly dynamic. Almost all the content on the site can be modified or removed directly from the dashboard, making it easy for the client's team to manage updates on their own.
While the platform isn't fully released yet, it is currently deployed on a VPS. To keep costs down on a tight budget, I used Coolify instead of expensive pay-as-you-go services like Vercel or AWS. Since our server has very limited RAM and CPU, I had to find workarounds to save resources. To avoid overloading the server during builds, I set up GitHub Actions to build the API and website as Docker images and store them in the GitHub Container Registry. Coolify then simply fetches the latest images and automatically redeploys them whenever an update is available.
I also worked alongside the lead developer to add new features and implement new systems.
In all honesty, I learned a lot from him, and thanks to his guidance, I was able to expand into backend development. This experience helped me become a full-stack developer who can maintain and create systems from scratch where the frontend, backend, and database all work together synchronously.

