Address-Mapper is a full-stack web application built with SvelteKit (Frontend), Node.js + Express (Backend), and MongoDB (Database). It calculates the distance between addresses and provides a user-friendly interface. This project supports Docker deployment, making it easy to set up locally and in production.
Pre-requisite: Docker client should be running, envs should be added ( this will just make sure the third party apis are working )
-
Clone the repo
-
Add environment variables in /backend before running the project, create a
.envfile inside thebackendfolder and add the following variables:
PORT=7004
MONGO_USERNAME= # MongoDB user name
MONGO_PASSWORD= # MongoDB password
MONGO_HOST= # MongoDB host
GOOGLE_API_KEY= # Google API key
ALLOWED_ORIGINS= # http://localhost:5173 for local development and testing- Update variable
API_URLand set it to localhost url web/src/config/constant.js
localHost url: http://localhost:7004- On project root terminal run
make serviceThe project is live and accessible at https://address-mapper-production-322e.up.railway.app.
The application is deployed using Railway, and Docker is used for containerization, ensuring reliable deployment environments
You can access swagger api-documentation at https://address-mapper-production.up.railway.app/api-docs/#/
Make sure to change the server to production server while using the api-doc.
| Category | Technologies |
|---|---|
| Frontend | SvelteKit, Vite, Bootstrap |
| Backend | Node.js, Express.js |
| Database | MongoDB |
| Deployment | Docker, Docker Compose, Railway |
| Linting | ESLint, Prettier |
| APIs | Nominatim (Geocoding), Google API (Distance Calculation) |
- Built with SvelteKit and Vite for modern UI development
- Uses Bootstrap for responsive design and styling
- Secure and scalable Node.js & Express.js architecture
- Joi Middleware for request validation and data integrity
- API documentation with Swagger
- Retry Mechanism to handle API failures gracefully
- Rate limiting, CORS, Helmet, and Joi validation for security and performance
- Proper test cases with node:test
- MongoDB for flexible document-based storage
- Nominatim API for address-to-coordinates conversion
- Google API for accurate distance calculations
- Rate Limiting to prevent abuse and throttling
- CORS Enabled to handle cross-origin requests securely
- ESLint & Prettier for code quality and formatting
- Dockerized Backend & Web using Docker Compose for easy deployment
- Railway for cloud hosting with auto-deployments
- Makefile to consolidate commands
make lint-backendLint and Format the Backend Code. Fixes ESLint errors in the backend code (backend/**/*.js). Formats code using Prettier for consistent styling.
make start-backendStarts the Backend. Navigates to the backend directory and starts the Node.js Express server. Runs on port 7004 by default.
make start-webStart the Frontend. Navigates to the web directory and starts the SvelteKit frontend. Runs the frontend on port 5173 by default.
make serviceStart the Full Application with Docker. Runs the entire application using Docker Compose.
make service-buildBuilds all Docker containers without starting them. Useful if you want to prepare images before deployment.
make service-stopStops all running Docker containers gracefully.
make testStart running the backed test cases.
