online store for custom phone cases
- custom phone case catalog with search and filters
- cart and order management
- telegram bot for order notifications and support
- admin panel for managing cases, orders, and payment settings
- light/dark theme support
- multi-language support (en/ru)
- react 19
- typescript
- vite
- react router
- nestjs
- typescript
- postgresql
- typeorm
- jwt auth
- aws s3 (digitalocean spaces)
- python
- telegram bot api
domain-driven design (ddd) with clean architecture:
- domain - business logic and entities
- application - use cases and dtos
- infrastructure - controllers, repositories, external services
- docker & docker compose
- node.js 18+
- python 3.11+
- clone repository
git clone https://github.com/yourusername/emptylight.git
cd emptylight- create
.envfile
cp .env.example .envconfigure storage type in .env:
STORAGE_TYPE=local- store files locally inapi/uploads/folderSTORAGE_TYPE=spaces- store files in digitalocean spaces (s3-compatible)
for local storage:
STORAGE_TYPE=local
UPLOAD_PATH=uploads
API_URL=http://localhost:3001for cloud storage:
STORAGE_TYPE=spaces
SPACES_ENDPOINT=https://fra1.digitaloceanspaces.com
SPACES_REGION=fra1
SPACES_BUCKET_NAME=your-bucket-name
SPACES_ACCESS_KEY=your-access-key
SPACES_SECRET_KEY=your-secret-key
SPACES_CDN_URL=https://your-cdn-url.com- start services
docker-compose up -d- create admin user
cd api
npm run seed:admin- start frontend
cd client
npm install
npm run devdocker-compose -f docker-compose.yml up -dcd api
npm run start:devcd bot
python src/main.pycd client
npm run devcd api
npm run migration:generate -- src/infrastructure/database/migrations/MigrationName
npm run migration:runmit





