Production-Ready CRM System dengan Django REST Framework Backend + Svelte Frontend
Mendukung 6000+ concurrent users dengan horizontal scaling
# Clone repository
git clone https://github.com/dadinjaenudin/crm-svelte.git
cd crm-svelte
# Start all services (Django, PostgreSQL, Redis, Frontend)
docker-compose -f docker-compose.django.yml up -d --build
# Wait 30-60 seconds for services to initialize
# Access application
open http://localhost:5173
Default Login:
adminadmin123Service URLs:
ββββββββββββββββ ββββββββββββββββ
β Svelte ββββββΊβ Django β
β Frontend β HTTP β Backend β
β (Port 5173) βββββββ (Port 8000) β
ββββββββββββββββ ββββββββ¬ββββββββ
β
βββββββββββββββΌββββββββββββββ
β β β
ββββββΌββββ βββββββΌβββββ ββββββΌβββββ
βPostgreSQLβ β Redis β β Static β
β(Database)β β (Cache) β β Files β
ββββββββββββ ββββββββββββ βββββββββββ
/api/members//api/points//api/vouchers//api/redeem//api/auth/login//api/auth/register//api/auth/me//api/auth/token/refresh/Prerequisites:
Setup:
# Clone repository
git clone https://github.com/dadinjaenudin/crm-svelte.git
cd crm-svelte
# Copy environment file
cp .env.django .env
# (Optional) Update passwords in .env
nano .env
# Start all services
docker-compose -f docker-compose.django.yml up -d --build
# View logs
docker-compose -f docker-compose.django.yml logs -f
# Stop services
docker-compose -f docker-compose.django.yml down
cd backend-django
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Setup database
python manage.py migrate
python manage.py loaddata apps/*/fixtures/*.json
# Create superuser
python manage.py createsuperuser
# Run server
python manage.py runserver 0.0.0.0:8000
# Install dependencies
npm install
# Update .env
echo "VITE_API_URL=http://localhost:8000/api" > .env
# Run dev server
npm run dev
# Start services
docker-compose -f docker-compose.django.yml up -d
# Stop services
docker-compose -f docker-compose.django.yml down
# View logs
docker-compose -f docker-compose.django.yml logs -f backend
# Restart service
docker-compose -f docker-compose.django.yml restart backend
# Execute commands in container
docker-compose -f docker-compose.django.yml exec backend python manage.py migrate
# Run migrations
docker-compose -f docker-compose.django.yml exec backend python manage.py migrate
# Create superuser
docker-compose -f docker-compose.django.yml exec backend python manage.py createsuperuser
# Load fixtures
docker-compose -f docker-compose.django.yml exec backend python manage.py loaddata apps/*/fixtures/*.json
# Django shell
docker-compose -f docker-compose.django.yml exec backend python manage.py shell
# Collect static files
docker-compose -f docker-compose.django.yml exec backend python manage.py collectstatic
# Access PostgreSQL
docker-compose -f docker-compose.django.yml exec postgres psql -U crm_user -d crm_database
# Backup database
docker-compose -f docker-compose.django.yml exec postgres pg_dump -U crm_user crm_database > backup.sql
# Restore database
docker-compose -f docker-compose.django.yml exec -T postgres psql -U crm_user crm_database < backup.sql
# Run test script
./test_django_api.sh
# Expected output:
# β
Health check passed
# β
Login passed
# β
Get members passed
# β
Get vouchers passed
# β
All tests passed!
# Test login
curl -X POST http://localhost:8000/api/auth/login/ \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "admin123"}'
# Test get members (with token)
TOKEN="your-access-token"
curl http://localhost:8000/api/members/ \
-H "Authorization: Bearer $TOKEN"
See: TEST_API_DJANGO.md for comprehensive testing guide
| Document | Description |
|---|---|
| COMPLETE_MIGRATION_SUMMARY.md | Complete migration overview (Express β Django) |
| FRONTEND_API_MIGRATION.md | Frontend API integration guide |
| DJANGO_DOCKER_SETUP.md | Docker Compose setup guide |
| DJANGO_COMPLETE_SUMMARY.md | Django backend implementation summary |
| TEST_API_DJANGO.md | API testing guide |
| backend-django/README.md | Django backend documentation |
| PERFORMANCE_ANALYSIS_6000_USERS.md | Performance analysis & benchmarks |
/api/auth/)POST /auth/login/ - User loginPOST /auth/register/ - User registrationPOST /auth/token/refresh/ - Refresh access tokenGET /auth/me/ - Get current user profilePUT /auth/profile/ - Update user profilePOST /auth/change-password/ - Change password/api/members/)GET /members/ - List all membersPOST /members/ - Create new memberGET /members/{id}/ - Get member detailsPUT /members/{id}/ - Update memberDELETE /members/{id}/ - Delete memberGET /members/statistics/ - Member statistics/api/points/)GET /points/ - List point transactionsPOST /points/ - Create point transactionGET /points/statistics/ - Point statistics/api/vouchers/)GET /vouchers/ - List all vouchersPOST /vouchers/ - Create new voucherGET /vouchers/{id}/ - Get voucher detailsPUT /vouchers/{id}/ - Update voucherDELETE /vouchers/{id}/ - Delete voucherGET /vouchers/statistics/ - Voucher statistics/api/redeem/)GET /redeem/ - List redeem transactionsPOST /redeem/ - Create redeem transactionPOST /redeem/{id}/update-status/ - Update redeem statusGET /redeem/statistics/ - Redeem statisticsFull API Documentation: http://localhost:8000/api/docs (Swagger UI)
| Metric | Express.js | Django + DRF | Improvement |
|---|---|---|---|
| Database | SQLite | PostgreSQL | β 10x faster |
| Concurrent Users | 50-100 | 6000+ | β 60x capacity |
| API Response Time | 100-200ms | 30-50ms | β 4x faster |
| Query Speed | 50-100ms | 10-20ms | β 5x faster |
| Cache Hit Rate | 0% | 80-90% | β New feature |
Development:
Production (Expected):
DJANGO_DEBUG=Falsegit checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)MIT License - Free to use for personal or commercial purposes.
Built with β€οΈ using Django + Svelte
β COMPLETE (100%)
GitHub Repository: https://github.com/dadinjaenudin/crm-svelte
Happy Coding! π