first commit
This commit is contained in:
266
README.md
266
README.md
@@ -1,266 +0,0 @@
|
||||
# 🚗 Smart Parking Finder
|
||||
|
||||
A modern web application for finding and navigating to available parking spaces using OpenStreetMap and Valhalla routing engine.
|
||||
|
||||
## 🏗️ Project Structure
|
||||
|
||||
```
|
||||
smart-parking-finder/
|
||||
├── frontend/ # Next.js frontend application
|
||||
│ ├── src/
|
||||
│ │ ├── app/ # App router pages
|
||||
│ │ ├── components/ # Reusable React components
|
||||
│ │ ├── hooks/ # Custom React hooks
|
||||
│ │ ├── services/ # API services
|
||||
│ │ ├── types/ # TypeScript type definitions
|
||||
│ │ └── utils/ # Utility functions
|
||||
│ ├── public/ # Static assets
|
||||
│ └── package.json
|
||||
├── backend/ # NestJS backend API
|
||||
│ ├── src/
|
||||
│ │ ├── modules/ # Feature modules
|
||||
│ │ ├── common/ # Shared utilities
|
||||
│ │ ├── config/ # Configuration
|
||||
│ │ └── database/ # Database setup
|
||||
│ └── package.json
|
||||
├── valhalla/ # Valhalla routing engine
|
||||
│ ├── Dockerfile
|
||||
│ ├── valhalla.json # Valhalla configuration
|
||||
│ └── osm-data/ # OpenStreetMap data files
|
||||
├── docker-compose.yml # Development environment
|
||||
├── docker-compose.prod.yml # Production environment
|
||||
└── README.md
|
||||
```
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### Prerequisites
|
||||
- Docker & Docker Compose
|
||||
- Node.js 18+
|
||||
- PostgreSQL with PostGIS
|
||||
|
||||
### Development Setup
|
||||
|
||||
1. **Clone the repository**
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd smart-parking-finder
|
||||
```
|
||||
|
||||
2. **Start infrastructure services**
|
||||
```bash
|
||||
docker-compose up -d postgres redis valhalla
|
||||
```
|
||||
|
||||
3. **Install dependencies**
|
||||
```bash
|
||||
# Frontend
|
||||
cd frontend && npm install
|
||||
|
||||
# Backend
|
||||
cd ../backend && npm install
|
||||
```
|
||||
|
||||
4. **Environment setup**
|
||||
```bash
|
||||
# Copy environment files
|
||||
cp frontend/.env.example frontend/.env.local
|
||||
cp backend/.env.example backend/.env
|
||||
```
|
||||
|
||||
5. **Database setup**
|
||||
```bash
|
||||
# Run migrations
|
||||
cd backend && npm run migration:run
|
||||
|
||||
# Seed initial data
|
||||
npm run seed:run
|
||||
```
|
||||
|
||||
6. **Start development servers**
|
||||
```bash
|
||||
# Terminal 1 - Backend
|
||||
cd backend && npm run start:dev
|
||||
|
||||
# Terminal 2 - Frontend
|
||||
cd frontend && npm run dev
|
||||
```
|
||||
|
||||
Visit `http://localhost:3000` to see the application.
|
||||
|
||||
## 🔧 Technology Stack
|
||||
|
||||
### Frontend
|
||||
- **Next.js 14** - React framework with App Router
|
||||
- **TypeScript** - Type safety and better DX
|
||||
- **Tailwind CSS** - Utility-first CSS framework
|
||||
- **React Leaflet** - Interactive maps
|
||||
- **React Query** - Server state management
|
||||
- **Zustand** - Client state management
|
||||
|
||||
### Backend
|
||||
- **NestJS** - Scalable Node.js framework
|
||||
- **TypeORM** - Database ORM with TypeScript
|
||||
- **PostgreSQL + PostGIS** - Spatial database
|
||||
- **Redis** - Caching and session storage
|
||||
- **Swagger** - API documentation
|
||||
|
||||
### Infrastructure
|
||||
- **Docker** - Containerization
|
||||
- **Valhalla** - Open-source routing engine
|
||||
- **CloudFlare** - CDN and security
|
||||
|
||||
## 🌟 Features
|
||||
|
||||
### ✅ Implemented
|
||||
- User location detection via GPS
|
||||
- Interactive map with OpenStreetMap
|
||||
- Nearby parking lot search
|
||||
- Real-time availability display
|
||||
- Route calculation with Valhalla
|
||||
- Turn-by-turn navigation
|
||||
- Responsive design
|
||||
- PWA support
|
||||
|
||||
### 🚧 In Progress
|
||||
- User authentication
|
||||
- Parking reservations
|
||||
- Payment integration
|
||||
- Push notifications
|
||||
|
||||
### 📋 Planned
|
||||
- Offline mode
|
||||
- Multi-language support
|
||||
- EV charging station integration
|
||||
- AI-powered parking predictions
|
||||
|
||||
## 📊 API Documentation
|
||||
|
||||
### Parking Endpoints
|
||||
- `GET /api/parking/nearby` - Find nearby parking lots
|
||||
- `GET /api/parking/:id` - Get parking lot details
|
||||
- `POST /api/parking/:id/reserve` - Reserve a parking space
|
||||
|
||||
### Routing Endpoints
|
||||
- `POST /api/routes/calculate` - Calculate route between points
|
||||
- `GET /api/routes/:id` - Get route details
|
||||
- `POST /api/routes/:id/optimize` - Optimize existing route
|
||||
|
||||
### User Endpoints
|
||||
- `POST /api/auth/login` - User authentication
|
||||
- `GET /api/users/profile` - Get user profile
|
||||
- `POST /api/users/favorites` - Add favorite parking lot
|
||||
|
||||
Full API documentation available at `/api/docs` when running the backend.
|
||||
|
||||
## 🧪 Testing
|
||||
|
||||
### Frontend Testing
|
||||
```bash
|
||||
cd frontend
|
||||
npm run test # Unit tests
|
||||
npm run test:e2e # End-to-end tests
|
||||
npm run test:coverage # Coverage report
|
||||
```
|
||||
|
||||
### Backend Testing
|
||||
```bash
|
||||
cd backend
|
||||
npm run test # Unit tests
|
||||
npm run test:e2e # Integration tests
|
||||
npm run test:cov # Coverage report
|
||||
```
|
||||
|
||||
## 🚀 Deployment
|
||||
|
||||
### Development
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### Production
|
||||
```bash
|
||||
docker-compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### Environment Variables
|
||||
```bash
|
||||
# Frontend (.env.local)
|
||||
NEXT_PUBLIC_API_URL=http://localhost:3001
|
||||
NEXT_PUBLIC_MAP_TILES_URL=https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png
|
||||
|
||||
# Backend (.env)
|
||||
DATABASE_URL=postgresql://user:password@localhost:5432/parking_db
|
||||
REDIS_URL=redis://localhost:6379
|
||||
VALHALLA_URL=http://localhost:8002
|
||||
JWT_SECRET=your-jwt-secret
|
||||
```
|
||||
|
||||
## 📈 Performance
|
||||
|
||||
### Metrics
|
||||
- Page load time: < 2 seconds
|
||||
- Route calculation: < 3 seconds
|
||||
- Map rendering: < 1 second
|
||||
- API response time: < 500ms
|
||||
|
||||
### Optimization
|
||||
- Code splitting for optimal bundle size
|
||||
- Image optimization with Next.js
|
||||
- Redis caching for frequent requests
|
||||
- Database query optimization
|
||||
- CDN for static assets
|
||||
|
||||
## 🔒 Security
|
||||
|
||||
### Implemented
|
||||
- HTTPS enforcement
|
||||
- JWT authentication
|
||||
- Rate limiting
|
||||
- Input validation
|
||||
- SQL injection prevention
|
||||
- XSS protection
|
||||
|
||||
### Best Practices
|
||||
- Regular dependency updates
|
||||
- Security headers
|
||||
- Environment variable protection
|
||||
- API key rotation
|
||||
- Database encryption
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Add tests
|
||||
5. Submit a pull request
|
||||
|
||||
### Development Guidelines
|
||||
- Follow TypeScript best practices
|
||||
- Write tests for new features
|
||||
- Update documentation
|
||||
- Follow conventional commits
|
||||
- Ensure code passes linting
|
||||
|
||||
## 📄 License
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
||||
|
||||
## 🆘 Support
|
||||
|
||||
- 📧 Email: support@smartparking.com
|
||||
- 💬 Discord: [Join our community](https://discord.gg/smartparking)
|
||||
- 🐛 Issues: [GitHub Issues](https://github.com/your-org/smart-parking-finder/issues)
|
||||
- 📖 Docs: [Documentation](https://docs.smartparking.com)
|
||||
|
||||
## 🙏 Acknowledgments
|
||||
|
||||
- OpenStreetMap for map data
|
||||
- Valhalla project for routing engine
|
||||
- PostGIS for spatial database capabilities
|
||||
- All contributors and beta testers
|
||||
|
||||
---
|
||||
|
||||
Made with ❤️ by the Smart Parking Team
|
||||
|
||||
Reference in New Issue
Block a user