A comprehensive volunteer opportunity platform that connects high school students with meaningful volunteer experiences using AI-powered personalized recommendations.
- User Authentication: Secure registration and login with JWT tokens
- AI-Powered Recommendations: Personalized volunteer opportunities using Groq LLM
- Volunteer Hours Logging: Track and manage volunteer hours with detailed statistics
- User Preferences: Customizable availability, interests, and location preferences
- Social Features: Friend connections and challenge participation
- Progress Tracking: Comprehensive statistics and achievement tracking
- Frontend: React with TypeScript, Tailwind CSS, React Router
- Backend: Node.js with Express, TypeScript
- Database: Azure SQL Database with Microsoft Entra authentication
- AI Integration: Groq API with Llama 3.1-8b-instant model
- Authentication: JWT-based authentication with secure middleware
hourly/
├── frontend/ # React TypeScript frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── contexts/ # React contexts (Auth)
│ │ ├── pages/ # Application pages
│ │ ├── services/ # API service layers
│ │ ├── types/ # TypeScript type definitions
│ │ └── utils/ # Utility functions
│ └── package.json
├── backend/ # Node.js Express backend
│ ├── src/
│ │ ├── config/ # Database and app configuration
│ │ ├── middleware/ # Authentication and validation
│ │ ├── routes/ # API route definitions
│ │ ├── services/ # Business logic services
│ │ └── types/ # TypeScript type definitions
│ ├── database/ # SQL schema and migrations
│ └── package.json
└── README.md
- Node.js (v16 or higher)
- npm or yarn
- Azure SQL Database access
- Groq API key
-
Navigate to backend directory:
cd backend -
Install dependencies:
npm install
-
Environment Configuration:
cp env.example .env
Update
.envwith your configuration:NODE_ENV=development PORT=3001 # Database Configuration DB_SERVER=your-server.database.windows.net DB_DATABASE=your-database DB_AUTHENTICATION_TYPE=azure-active-directory-default DB_ENCRYPT=true DB_TRUST_SERVER_CERTIFICATE=false # JWT Configuration JWT_SECRET=your-super-secret-jwt-key JWT_EXPIRES_IN=7d # CORS Configuration CORS_ORIGIN=http://localhost:3000 # LLM API Configuration LLM_API_KEY=your-groq-api-key LLM_API_URL=https://api.groq.com/openai/v1/chat/completions
-
Database Setup:
npm run setup-db
-
Start the server:
npm run dev
-
Navigate to frontend directory:
cd frontend -
Install dependencies:
npm install
-
Environment Configuration: Create
.envfile:REACT_APP_API_URL=http://localhost:3001/api
-
Start the development server:
npm start
The application uses the following main tables:
users- User accounts and preferencesopportunities- Volunteer opportunitiesvolunteer_logs- User volunteer hour recordschallenges- Volunteer challengesuser_challenges- User challenge participationfriends- Friend connectionsfriend_requests- Friend request management
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/profile- Get user profilePUT /api/auth/profile- Update user profile
GET /api/opportunities- Get volunteer opportunitiesGET /api/opportunities/:id- Get specific opportunityPOST /api/enhanced/opportunities/personalized- Get AI-powered recommendations
POST /api/enhanced/volunteer-logs- Log volunteer hoursGET /api/enhanced/volunteer-logs- Get user volunteer logsGET /api/enhanced/volunteer-logs/stats- Get user statisticsDELETE /api/enhanced/volunteer-logs/:id- Delete volunteer log
GET /api/enhanced/friends- Get user friendsPOST /api/enhanced/friends/request- Send friend requestPOST /api/enhanced/friends/accept- Accept friend requestGET /api/enhanced/challenges- Get active challengesPOST /api/enhanced/challenges/join- Join challenge
The platform uses Groq's LLM API to provide personalized volunteer opportunity recommendations based on:
- User location and preferences
- Availability schedule
- Transportation method
- Skills and interests
- Time commitment preferences
- User authentication and profile management
- AI-powered personalized opportunity recommendations
- Volunteer hours logging with statistics tracking
- User preference management with navigation
- Social features (friends, challenges)
- Comprehensive progress tracking
- Responsive UI with modern design
- Database integration with Azure SQL
- API route configuration and testing
- Registration/Login → User creates account or logs in
- Profile Setup → User sets preferences and availability
- AI Recommendations → System generates personalized opportunities
- Volunteer Logging → User logs volunteer hours
- Progress Tracking → System tracks statistics and achievements
- Social Interaction → Users connect with friends and join challenges
-
Build the application:
npm run build
-
Start production server:
npm start
-
Build for production:
npm run build
-
Deploy the
buildfolder to your hosting service
- The application uses TypeScript throughout for type safety
- Authentication is handled via JWT tokens
- Database operations use parameterized queries for security
- AI integration includes fallback mechanisms for reliability
- All API endpoints include proper error handling and validation
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.
- Groq for AI API services
- Azure for database hosting
- React and Node.js communities for excellent tooling
- All volunteer organizations that inspire this platform