Skip to content

Narmer23/vicinia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Vicinia - Location Scoring Application

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.

๐ŸŽฏ Purpose

The application provides location-based scoring by analyzing proximity to essential amenities, helping users make informed decisions about locations in the Lombardy region.

๐Ÿ—๏ธ Architecture Overview

Frontend

  • Framework: Quasar Framework (Vue.js 3)
  • Map: Leaflet with OpenStreetMap
  • UI: Material Design components
  • Languages: English and Italian support

Backend Microservices

  • 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

Data Layer

  • Database: PostgreSQL with separate databases per service
  • ORM: Entity Framework Core
  • Caching: Redis
  • Containerization: Docker & Docker Compose

๐Ÿš€ Features

Core Functionality

  • 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

User Features

  • 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

๐Ÿ“ Project Structure

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

๐Ÿ› ๏ธ Prerequisites

  • .NET 9 SDK
  • Node.js 18+ and npm
  • Docker and Docker Compose
  • PostgreSQL (or use Docker container)
  • Git

๐Ÿš€ Quick Start

1. Clone the Repository

git clone <repository-url>
cd vicinia

2. Start Infrastructure

docker-compose up -d postgres redis

3. Run Backend Services

cd backend
dotnet restore
dotnet run --project src/Vicinia.ApiGateway

4. Run Frontend

cd frontend
npm install
npm run dev

5. Access the Application

๐Ÿ”ง Development

Backend Development

cd backend
dotnet restore
dotnet build
dotnet test

Frontend Development

cd frontend
npm install
npm run dev          # Development server
npm run build        # Production build
npm run build:pwa    # PWA build

Database Migrations

cd backend/src/Vicinia.UserService
dotnet ef migrations add InitialCreate
dotnet ef database update

๐Ÿณ Docker Deployment

Development

docker-compose up -d

Production

docker-compose -f docker-compose.prod.yml up -d

๐Ÿ“Š API Documentation

The API documentation is available via Swagger UI at:

๐ŸŒ Internationalization

The application supports:

  • English (default)
  • Italian (auto-detected based on browser settings)

๐Ÿ”’ Security

  • JWT-based authentication
  • HTTPS enforcement in production
  • Input validation and sanitization
  • Rate limiting on API endpoints
  • CORS configuration

๐Ÿ“ˆ Monitoring & Logging

  • Structured logging with Serilog
  • Health check endpoints for all services
  • Application Insights integration ready
  • Error tracking and monitoring

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Submit a pull request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ†˜ Support

For support and questions:

  • Create an issue in the GitHub repository
  • Check the documentation in the /docs folder
  • Review the API documentation via Swagger

๐Ÿ”ฎ Future Enhancements

  • 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

About

This project is WIP and primarily created for testing AI code generation. Do not rely any of your services nor work on this.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors