Visitor Vault is a web application that allows users to mark their visited locations on an interactive world map. The application takes a visitor's name and location, stores the data in a database, and visualizes the entries using an interactive map powered by OpenStreetMaps and Leaflet.
- Users can enter their name and visited location through a form.
- Visitor data is stored in an AWS RDS backend database.
- An interactive map displays all recorded visits with pinpoint location markers.
- The application is deployed using AWS Lambda and Terraform.
- The application also uses a CI/CD pipeline connecting to an S3 bucket using GitHub Actions.
- Frontend: HTML, CSS, JavaScript
- Mapping Library: Leaflet, OpenStreetMaps
- Backend: AWS Lambda (Node.js/Python)
- Infrastructure as Code: Terraform
Ensure you have the following installed:
- Node.js (for local testing)
- AWS CLI configured with appropriate credentials
- Terraform (for infrastructure deployment)
- A GitHub account for repository management
git clone https://github.com/yourusername/visitor-vault.git
cd visitor-vault
- Install dependencies (if needed):
npm install
- Start a local development server:
npx http-server .
- Open
index.html
in a browser to access the form.
- Navigate to the
terraform/
directory. - Initialize Terraform:
terraform init
- Apply the Terraform configuration:
Confirm when prompted.
terraform apply
- Terraform will provision the AWS Lambda function and API Gateway.
- Copy the generated API endpoint and update
script.js
to use the correct API URL.
- Submit Visit:
POST /submit-visit
- Accepts{ "name": "User", "location": "City, Country" }
. - Fetch Visits:
GET /fetch-visitors
- Returns a JSON list of visitors with names and geolocation data.
visitor-vault/
│── assets/
│ ├── map.js
│ ├── results.js
│ ├── style.css
│ ├── script.js
│── terraform/
│ ├── main.tf
│ ├── lambda/
│ ├── lambda_function.py
│ ├── lambda_function.zip
│── index.html
│── results.html
│── README.md
- Implement user authentication.
- Enhance UI/UX with more interactive globe features.
This project is licensed under the MIT License.