This project is created using React + Emotion + Vite (REV) boilerplate.
- Frontend: React + Vite + Emotion
- UI Components: Ant Design - Grid system, Drawer, Icons, Carousel, and Select components
- Internationalization: react-i18next - Supports English and Kazakh languages
- Image Viewer: react-modal-image - Enlargeable images
- Backend: Flask - Lightweight Python framework serving content API
- Database: MongoDB - NoSQL database for content management
- DevOps: Docker + Docker Compose for containerization
- Git Hooks: Husky - Pre-push validation scripts
All services (backend, frontend, database) are containerized using Docker.
- Docker and Docker Compose
- Yarn
- Clone the repository:
git clone https://github.com/akbarkz/portfolio.git
cd portfolio- Build and start all containers:
yarn docker:build
yarn docker:upThe app will be available at http://localhost (port 80).
- Run the data migration (first time only):
yarn docker:migrateTo use hot-reloading of the frontend run the following command which will run the app at http://localhost:3000:
yarn start:client
Note: Local environment variables are already configured in the
.envfile with sensible defaults for Docker development.
yarn docker:down- Stop all containersyarn docker:logs- View container logsyarn docker:restart- Restart all servicesyarn docker:clean- Stop containers and remove volumesyarn docker:backup- Create MongoDB backup
The production version is deployed via Railway and can be viewed at: https://akbarkz.com/
- Frontend: Served with NIXPACKS auto-detection
- Backend: Flask with Gunicorn WSGI server
- Database: MongoDB hosted on Railway
- Backups: Automated daily backups via GitHub Actions (see backups/README.md)
MIT