WhatsApp.Video.2025-01-01.at.9.13.39.PM.mp4
A web application for tracking and monitoring personal health symptoms over time, featuring a user-friendly dashboard with calendar integration and map visualization capabilities. The Current version is a more barebones version of the app. There are a select handful of symptoms that are tracked, and there is no user profile page as of yet that allows for making changes to details such as location, email, etc. Future versions beyond this MVP will include a user profile page, more symptoms, considerations for bridging users to doctors or other users, and a mobile app.
- User authentication (register/login)
- Interactive dashboard for symptom tracking
- Calendar-based symptom history
- Geographic mapping using Leaflet.js
- Secure API with rate limiting
- Multi-environment support (development, test, production)
- HTML5, CSS3, JavaScript (Vanilla)
- Leaflet.js for map integration
- Node.js with http-server for development
- Express.js RESTful API
- PostgreSQL database
- Sequelize ORM
- JWT authentication
- Express Rate Limiter for API protection
- Node.js (v14 or higher)
- PostgreSQL (v12 or higher)
- npm or yarn package manager
- Clone the repository:
git clone https://github.com/MannyD95/SymptomTracker.git
cd MySymptomTracker- Install Backend Dependencies:
cd backend
npm install- Install Frontend Dependencies:
cd frontend
npm install- Configure Environment Variables:
- Copy
.env.testto.env - Update database credentials and other configuration as needed
- Setup Database:
# Create development and test databases
createdb sniffly_dev
createdb sniffly_test- Start the Backend:
cd backend
npm start- Start the Frontend:
cd frontend
npm startThe application will be available at:
- Frontend: http://localhost:8080
- Backend API: http://localhost:3000
Required environment variables:
DATABASE_URL: PostgreSQL connection stringJWT_SECRET: Secret key for JWT token generation- Other environment-specific variables as defined in
.env.test
This project is licensed under the MIT License - see the LICENSE file for details.