A full-stack application that enables fishing enthusiasts to discover and share fishing locations. Fish Spot allows users to create profiles, mark fishing spots on an interactive map, and share photos or videos with the community. Built with a scalable architecture leveraging AWS services for seamless performance.
- AWS EC2 for hosting the backend
- AWS S3 for secure media storage
- React for dynamic frontend interfaces
- Node.js with Express for backend REST APIs
- MySQL for structured data storage
- Local deployment setup for development
- Limited scalability and media storage
- Manual environment management
- Fetches and adds fishing spots to the database
- Includes media links and spot details
- Handles user authentication and registration
- Manages secure media uploads to AWS S3
- Frontend: React, HTML, CSS
- Backend: Node.js, Express, MySQL
- Cloud: AWS EC2, AWS S3
expressfor API creationmysql2for database interactionaws-sdkfor AWS S3 integrationreact-router-domfor frontend routing
- AWS Account with S3 and EC2 permissions
- MySQL database setup
- Node.js and npm installed locally
-
Clone the repository:
git clone https://github.com/BilalShakh/FishSpot.git cd FishSpot -
Install dependencies:
- Frontend:
cd client npm install - Backend:
cd ../server npm install
- Frontend:
-
Configure environment variables:
- Backend
.envfile:DB_HOST=your-db-host DB_USER=your-db-user DB_PASSWORD=your-db-password AWS_ACCESS_KEY=your-aws-access-key AWS_SECRET_KEY=your-aws-secret-key S3_BUCKET_NAME=your-s3-bucket
- Backend
-
Deploy the backend to AWS EC2 and set up the S3 bucket.
-
Run locally for testing:
- Backend:
cd server npm start - Frontend:
cd client npm start
- Backend:
- Media upload time: < 1 second for typical image files
- API response time: < 200ms for CRUD operations
- Scalability: Supports 150+ concurrent users with current configuration
- User authentication with hashed passwords
- AWS S3 for encrypted media storage
- Secure API endpoints with input validation
- Scales compute resources based on demand
- Pay-per-use pricing model
- Optimized for low-cost, secure storage
- Pay-per-storage and retrieval operations
This project is licensed under the MIT License - see the LICENSE file for details.
Project Link: https://github.com/BilalShakh/FishSpot