- Frontend: Deploy to Vercel
- Backend: Deploy to Render
- Database: MongoDB Atlas Free Tier
Note: The backend is hosted on Render's free tier and may sleep after 15 minutes of inactivity. First requests after sleep may take 40-60 seconds to wake up the server.
- Frontend: Deploy to Vercel
- Backend: Deploy to Render
- Database: MongoDB Atlas Free Tier
Note: The backend is hosted on Render's free tier and may sleep after 15 minutes of inactivity. First requests after sleep may take 40-60 seconds to wake up the server.NGO Volunteer Management Portal
β οΈ IMPORTANT NOTICE: The backend server is hosted on Render's free tier and may sleep after 15 minutes of inactivity. If you experience loading issues, please wait 40 seconds and refresh the page to wake up the server. For production use, consider upgrading to a paid hosting plan.
A modern, responsive web application built with the MERN stack for managing NGO volunteer applications. Features a beautiful glassmorphic design with comprehensive admin dashboard and seamless user experience.
- Frontend: Deploy to Vercel
- Render (Free tier with sleep)
- Vercel (For serverless functions)
- DigitalOcean App Platform
- Heroku (Paid only)
- Database: MongoDB Atlas Free Tier
- Beautiful glassmorphic design with gradient backgrounds
- Fully responsive mobile-first design
- Smooth animations and transitions
- Professional color scheme and typography
- Comprehensive registration form with validation
- 12 different volunteer interest categories
- Real-time form validation with Zod schema
- Success celebration with confetti animation
- Secure JWT-based authentication
- Interactive analytics with Chart.js
- Real-time search and filtering
- CSV export functionality (bulk and individual)
- Mobile-optimized admin interface
- Application trends over time
- Interest area distribution charts
- Weekly growth statistics
- Exportable volunteer data
- React 18 - Modern React with hooks and context
- Vite - Fast build tool and development server
- Tailwind CSS - Utility-first CSS framework
- React Router DOM - Client-side routing
- React Hook Form + Zod - Form management with schema validation
- Chart.js + React Chart.js 2 - Interactive data visualization
- Lucide React - Beautiful icon library
- Canvas Confetti - Celebration animations
- Node.js 20+ - JavaScript runtime environment
- Express.js - Web application framework
- MongoDB Atlas - Cloud database solution
- Mongoose - MongoDB object modeling
- JWT - JSON Web Token authentication
- bcryptjs - Password hashing
- Express Validator - Server-side validation
- Helmet - Security middleware
- CORS - Cross-origin resource sharing
- Node.js 18 or higher
- MongoDB Atlas account (or local MongoDB)
- Git
git clone https://github.com/pentoshi007/HopeConnect.git
cd HopeConnect# Install root dependencies
npm install
# Install client dependencies
cd client && npm install
# Install server dependencies
cd ../server && npm installCreate server/.env file:
MONGODB_URI=mongodb+srv://your-username:your-password@cluster.mongodb.net/hopeconnect
JWT_SECRET=your_super_secret_jwt_key_minimum_32_characters_long
PORT=3001
NODE_ENV=development
ADMIN_EMAIL=admin@hopeconnect.org
ADMIN_PASSWORD=your_secure_admin_password
CORS_ORIGIN=http://localhost:5173Create client/.env file:
VITE_API_URL=http://localhost:3001The application will automatically:
- Connect to MongoDB Atlas
- Create necessary collections
- Set up the admin user on first run
npm run dev# Terminal 1 - Backend
cd server && npm run dev
# Terminal 2 - Frontend
cd client && npm run devVisit http://localhost:5173 to see the application.
ngo-internship/
βββ client/ # React frontend
β βββ src/
β β βββ components/ # Reusable components
β β β βββ Navbar.jsx
β β β βββ Footer.jsx
β β β βββ ProtectedRoute.jsx
β β βββ context/ # React context
β β β βββ AuthContext.jsx
β β βββ hooks/ # Custom hooks
β β β βββ useScrollAnimation.js
β β βββ pages/ # Page components
β β β βββ Home.jsx
β β β βββ Register.jsx
β β β βββ ThankYou.jsx
β β β βββ AdminLogin.jsx
β β β βββ AdminDashboard.jsx
β β βββ App.jsx
β β βββ main.jsx
β β βββ index.css
β βββ public/
β βββ package.json
β βββ vite.config.js
βββ server/ # Node.js backend
β βββ src/
β β βββ controllers/ # Route controllers
β β β βββ authController.js
β β β βββ applicantController.js
β β βββ middleware/ # Custom middleware
β β β βββ auth.js
β β βββ models/ # MongoDB models
β β β βββ AdminUser.js
β β β βββ Applicant.js
β β βββ routes/ # API routes
β β β βββ authRoutes.js
β β β βββ applicantRoutes.js
β β βββ app.js
β βββ server.js
β βββ package.json
β βββ .env.example
βββ package.json # Root package file
npm run dev- Run both client and servernpm run install:all- Install all dependenciesnpm run build- Build client for productionnpm start- Start production server
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
npm run dev- Start with nodemonnpm start- Start production servernpm run lint- Run ESLint
POST /api/applicants- Submit volunteer applicationGET /health- Health check endpoint
POST /api/auth/login- Admin loginPOST /api/auth/logout- Admin logoutGET /api/auth/verify- Verify JWT tokenGET /api/applicants- Get all applications (admin only)
The application supports 12 volunteer interest areas:
- Education & Literacy
- Rural Development
- Women Empowerment
- Child Welfare
- Healthcare & Sanitation
- Environmental Conservation
- Skill Development & Training
- Elderly Care
- Disaster Relief
- Digital Literacy
- Arts & Culture
- Food Security & Nutrition
- JWT-based authentication
- Password hashing with bcryptjs
- Input validation (client and server-side)
- CORS protection
- Rate limiting
- Security headers with Helmet
- Environment variable protection
- Mobile-first approach
- Tailwind CSS breakpoints:
sm:640px and upmd:768px and uplg:1024px and upxl:1280px and up
MONGODB_URI=your_production_mongodb_uri
JWT_SECRET=your_production_jwt_secret_32_chars_minimum
PORT=3001
NODE_ENV=production
ADMIN_EMAIL=your_admin_email
ADMIN_PASSWORD=your_secure_password
CORS_ORIGIN=https://your-frontend-domain.vercel.appVITE_API_URL=https://your-backend-domain.com- Vercel - Fast, reliable frontend hosting with global CDN
- Automatic deployments from GitHub
- Custom domain support
- Environment variables configured
- Render - Free tier backend hosting (
β οΈ May sleep after 15 minutes of inactivity) - Automatic wake-up on first request (takes ~40 seconds)
- Direct GitHub integration
- SSL certificates included
- MongoDB Atlas - Cloud database with free tier
- Global availability and automatic backups
- Secure connections and monitoring
cd client
npm run buildcd server
npm start- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Created with β€οΈ for NGO volunteer management
For support and questions:
- Email: support@hopeconnect.org
- Phone: +91 98765 43210
Note: Make sure to update the MongoDB connection string, JWT secret, and other environment variables before deploying to production. cd ngo-internship
2. **Install dependencies**
```bash
npm run install:all
-
Set up environment variables
# Copy and configure server environment cp server/.env.example server/.env # Update server/.env with your MongoDB URI and secrets # Update client/.env if needed for API URL
-
Start development servers
npm run dev
This will start:
- Client at
http://localhost:5173 - Server at
http://localhost:3001
- Client at
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_super_secret_jwt_key
PORT=3001
NODE_ENV=development
ADMIN_EMAIL=admin@ngo.com
ADMIN_PASSWORD=admin123
CORS_ORIGIN=http://localhost:5173VITE_API_URL=http://localhost:3001ngo-internship/
βββ client/ # React frontend
β βββ src/
β β βββ components/ # Reusable components
β β βββ pages/ # Page components
β β βββ context/ # React context
β β βββ hooks/ # Custom hooks
β β βββ assets/ # Static assets
β βββ public/
β βββ package.json
βββ server/ # Express backend
β βββ src/
β β βββ controllers/ # Route handlers
β β βββ models/ # Mongoose models
β β βββ routes/ # API routes
β β βββ middleware/ # Custom middleware
β β βββ app.js # Express app
β βββ server.js # Server entry point
β βββ package.json
βββ package.json # Root package.json
POST /api/applicants- Submit internship applicationPOST /api/auth/login- Admin loginGET /health- Health check
GET /api/applicants- List all applicants (with search/filter)GET /api/applicants/:id- Get specific applicantGET /api/auth/me- Get current admin userPOST /api/auth/logout- Admin logout
Default admin credentials:
- Email: admin@ngo.com
- Password: admin123
--bg-main: #F7F9FC (Main background)--bg-glass: rgba(255,255,255,0.15) (Glass effect)--text-primary: #0F172A (Primary text)--accent: #6366F1 (Accent color)--accent-light: #A5B4FC (Light accent)--error: #EF4444 (Error color)
- Backdrop blur: 20px
- Border radius: 16px
- Semi-transparent backgrounds
- Subtle borders and shadows
npm run dev- Start both client and server in developmentnpm run install:all- Install all dependenciesnpm run build- Build client for productionnpm run lint- Lint both client and servernpm run format- Format code with Prettier
npm run dev- Start Vite dev servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- ESLintnpm run format- Prettier
npm run dev- Start with nodemonnpm start- Start production servernpm run lint- ESLintnpm run format- Prettier
- Push to GitHub
- Connect repository to Vercel
- Set build command:
npm run build - Set output directory:
dist - Add environment variable:
VITE_API_URL=https://your-api-domain.com
- Push to GitHub
- Create new Web Service on Render
- Set build command:
npm install - Set start command:
npm start - Add environment variables from
.env.example
- Use MongoDB Atlas (free tier available)
- Whitelist your deployment server IPs
- Use connection string in
MONGODB_URI
- Fork the repository
- Create a feature branch
- Make your changes
- Run linting and formatting
- Submit a pull request
MIT License - see LICENSE file for details
For support or questions, please open an issue on GitHub.
Built with β€οΈ using modern web technologies