A scalable, maintainable web and mobile application that scores locations in Lombardy, Italy, based on proximity to Points of Interest (POIs) like schools, hospitals, supermarkets, and more.
The application provides location-based scoring by analyzing proximity to essential amenities, helping users make informed decisions about locations in the Lombardy region.
- Framework: Quasar Framework (Vue.js 3)
- Map: Leaflet with OpenStreetMap
- UI: Material Design components
- Languages: English and Italian support
- API Gateway: Entry point for all client requests
- User Service: Authentication and user management
- Scoring Service: Core business logic for location scoring
- Geocoding Service: Address to coordinates conversion
- POI Service: Points of Interest data management
- History Service: Search history tracking
- Logging Service: Centralized logging
- Database: PostgreSQL with separate databases per service
- ORM: Entity Framework Core
- Caching: Redis
- Containerization: Docker & Docker Compose
- Address Search: Manual address input with geocoding
- Transportation Modes: Car and walking distance calculations
- Dynamic Scoring: 1-10 score based on POI proximity
- Real-time POI Data: Integration with Regione Lombardia OpenData APIs
- Interactive Maps: Map-first interface with POI markers
- Authentication: Registration and login with email/password
- Search History: Store and retrieve user search history
- Multilingual: English and Italian support
- Responsive Design: Works on web and mobile devices
vicinia/
โโโ frontend/ # Quasar Framework frontend
โโโ backend/ # .NET microservices
โ โโโ src/
โ โ โโโ Vicinia.ApiGateway/
โ โ โโโ Vicinia.UserService/
โ โ โโโ Vicinia.ScoringService/
โ โ โโโ Vicinia.GeocodingService/
โ โ โโโ Vicinia.PoiService/
โ โ โโโ Vicinia.HistoryService/
โ โ โโโ Vicinia.LoggingService/
โ โโโ tests/
โโโ infrastructure/ # Docker and deployment configs
โโโ docs/ # Documentation
โโโ scripts/ # Build and deployment scripts
- .NET 9 SDK
- Node.js 18+ and npm
- Docker and Docker Compose
- PostgreSQL (or use Docker container)
- Git
git clone <repository-url>
cd viciniadocker-compose up -d postgres rediscd backend
dotnet restore
dotnet run --project src/Vicinia.ApiGatewaycd frontend
npm install
npm run dev- Frontend: http://localhost:9000
- API Gateway: http://localhost:5000
- Swagger Documentation: http://localhost:5000/swagger
cd backend
dotnet restore
dotnet build
dotnet testcd frontend
npm install
npm run dev # Development server
npm run build # Production build
npm run build:pwa # PWA buildcd backend/src/Vicinia.UserService
dotnet ef migrations add InitialCreate
dotnet ef database updatedocker-compose up -ddocker-compose -f docker-compose.prod.yml up -dThe API documentation is available via Swagger UI at:
- Development: http://localhost:5000/swagger
- Production: https://api.vicinia.com/swagger
The application supports:
- English (default)
- Italian (auto-detected based on browser settings)
- JWT-based authentication
- HTTPS enforcement in production
- Input validation and sanitization
- Rate limiting on API endpoints
- CORS configuration
- Structured logging with Serilog
- Health check endpoints for all services
- Application Insights integration ready
- Error tracking and monitoring
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the GitHub repository
- Check the documentation in the
/docsfolder - Review the API documentation via Swagger
- GPS support for mobile devices
- Custom scoring per POI type
- POI sharing via links/images
- Optional POI caching
- Third-party routing API integration
- Advanced analytics and reporting