A full-stack web application for tracking and monitoring water temperature data across beaches and regions in the Greater Toronto Area (GTA). This mobile-optimized platform enables users to contribute, analyze, and visualize water temperature data while learning about environmental patterns.
The Glow Temperature Tracker aims to create a community-driven platform for monitoring water temperatures across GTA beaches. By combining user-contributed data with historical records, we provide valuable insights into water temperature patterns and trends.
- Mobile-optimized interface for easy data contribution
- Interactive map with color-coded temperature visualization
- Historical data analysis and comparison tools
- User authentication and personal data tracking
- Educational content about water temperature patterns
- Bulk data upload capability
- Regional trend analysis
- Node.js
- npm or yarn
- Supabase account
- Clone the repository:
git clone [repository-url]
cd glow-temperature-tracker- Install dependencies:
# Install frontend dependencies
cd client
npm install
# Install backend dependencies
cd ../server
npm install- Configure environment variables:
Create .env in the server directory:
PORT=8080
SUPABASE_URL=your_supabase_url
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
SENDGRID_API_KEY=your_sendgrid_api_key
[email protected]
Create .env.local in the client directory:
NEXT_PUBLIC_API_URL=http://localhost:8080/api
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
- Start the development servers:
# Start backend server
cd server
npm run dev
# Start frontend server (in a new terminal)
cd client
npm run devThe application will be available at:
- Frontend: http://localhost:3000
- Backend: http://localhost:8080
glow-temperature-tracker/
βββ client/ # Next.js frontend application
β βββ app/ # App router pages and components
β βββ components/ # Reusable components
β βββ lib/ # Utility functions and shared logic
β βββ public/ # Static assets
β βββ styles/ # Global styles
β
βββ server/ # Express.js backend application
β βββ app/
β βββ controllers/ # Route controllers
β βββ middleware/ # Custom middleware
β βββ models/ # Data models
β βββ routes/ # API routes
β
βββ docs/ # Project documentation and deliverables
The application includes example authentication pages and components:
/auth/login- User login page/auth/register- New user registration/auth/forgot-password- Password recovery/auth/reset-password- Password reset form
Authentication is handled using Supabase Auth, providing:
- Email/password authentication
- Session management
- Protected routes
- User profile management
We follow a simplified Git Flow approach:
main- Production-ready codedevelop- Integration branch for featuresfeature/*- New features and enhancementsbugfix/*- Bug fixeshotfix/*- Urgent production fixes
- Features:
feat/description-of-feature - Bug fixes:
bugfix/description-of-bug - Hotfixes:
hotfix/description-of-fix
We follow the Conventional Commits specification for our commit messages:
feat:- A new featurefix:- A bug fixdocs:- Documentation only changesrefactor:- A code change to restructure code w/o changing app behaviourtest:- Adding missing tests or correcting existing testschore:- Miscellaneous commits
Format: <type>: <description>
Examples:
feat: add Google OAuth login
fix: correct temperature data display
docs: update installation instructions
We use GitHub Issues for project management:
- Feature requests
- Bug reports
- Task tracking
- Documentation updates
Issue labels:
improvement- New featuresbug- Bug reportsdocumentation- Documentation updateshelp wanted- Extra attention needed
- Ensure your code follows the project's style guidelines
- Update the README.md with details of changes if needed
- Update the documentation if you're changing functionality
- The PR will be merged once you have the sign-off of at least one other developer
- Follow the existing code style
- Use meaningful variable and function names
- Write clear commit messages
- Keep functions small and focused
- Add comments for complex logic
Mohamed Ibrahim
Haseeb Afzal
Zohair Syed
Ousman Jikineh
Adeeb Nawshad