An open API service indexing awesome lists of open source software.

https://github.com/tanushreesarkar/uplifters-net

Uplifters.Net is a web-based donation and volunteer management platform designed to connect donors with causes related to clothing, food, and education support. The platform allows users to explore donation categories, view real-time impact through interactive cards and counters, and engage with visual testimonials. Used HTML, CSS, and Javascript.
https://github.com/tanushreesarkar/uplifters-net

css html javascript nodejs reactjs sql

Last synced: 3 months ago
JSON representation

Uplifters.Net is a web-based donation and volunteer management platform designed to connect donors with causes related to clothing, food, and education support. The platform allows users to explore donation categories, view real-time impact through interactive cards and counters, and engage with visual testimonials. Used HTML, CSS, and Javascript.

Awesome Lists containing this project

README

          

# ๐ŸŒ Uplifters.Net โ€“ Joining Hearts & Hands with Technology


Uplifters.Net Logo

**A full-stack charity platform connecting acts of kindness to real human needs.**

Built with โค๏ธ using HTML, CSS, JavaScript, Node.js, Express, MongoDB, Cloudinary, and Gmail SMTP.
Deployed on **Render** (Backend) & **Vercel** (Frontend).





![GitHub stars](https://img.shields.io/github/stars/TanushreeSarkar/uplifters-net?style=social)
![GitHub forks](https://img.shields.io/github/forks/TanushreeSarkar/uplifters-net?style=social)
![GitHub issues](https://img.shields.io/github/issues/TanushreeSarkar/uplifters-net)
![Status](https://img.shields.io/badge/Status-Live-brightgreen?style=flat-square)

---

## โœจ Key Features

- ๐ŸŽจ **Modern & Responsive Design** โ€“ Beautiful UI that works seamlessly across all devices
- ๐ŸŒ— **Light/Dark Mode** โ€“ Toggle between themes for comfortable viewing
- ๐Ÿ”ฅ **Full-Stack Integration** โ€“ Complete frontend and backend with cloud services
- โ˜๏ธ **Cloud Storage** โ€“ Cloudinary-powered image gallery and uploads
- ๐Ÿ“Š **Dynamic Metrics Dashboard** โ€“ Real-time donation impact tracking
- โœ‰๏ธ **Smart Contact System** โ€“ Gmail SMTP integration with automated responses
- ๐Ÿ”’ **Secure Authentication** โ€“ JWT-based auth with role management (Admin/User)
- ๐ŸŽฏ **Campaign Management** โ€“ Track and display active donation campaigns
- โญ **User Testimonials** โ€“ Community feedback with admin moderation

---

## ๐Ÿ–ผ๏ธ Preview


Homepage Preview

Clean, intuitive, and emotionally engaging interface

---

## ๐Ÿ› ๏ธ Tech Stack

| Layer | Technologies |
|-------------|--------------|
| **Frontend** | HTML5, CSS3, JavaScript, Bootstrap, Swiper.js, Lightbox |
| **Backend** | Node.js, Express.js, Mongoose, JWT, Multer, Nodemailer |
| **Database** | MongoDB Atlas |
| **Storage** | Cloudinary |
| **Email** | Gmail SMTP (App Password) |
| **Deployment** | Render (Backend), Vercel (Frontend) |

---

## ๐Ÿ“ Project Structure

```
uplifters-net/
โ”‚
โ”œโ”€โ”€ frontend/
โ”‚ โ”œโ”€โ”€ index.html
โ”‚ โ”œโ”€โ”€ css/
โ”‚ โ”‚ โ””โ”€โ”€ styles.css
โ”‚ โ”œโ”€โ”€ js/
โ”‚ โ”‚ โ””โ”€โ”€ main.js
โ”‚ โ””โ”€โ”€ img/
โ”‚ โ””โ”€โ”€ don/
โ”‚
โ”œโ”€โ”€ backend/
โ”‚ โ”œโ”€โ”€ src/
โ”‚ โ”‚ โ”œโ”€โ”€ app.js
โ”‚ โ”‚ โ”œโ”€โ”€ server.js
โ”‚ โ”‚ โ”œโ”€โ”€ routes/
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ auth.js
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ gallery.js
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ contact.js
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ testimonials.js
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ metrics.js
โ”‚ โ”‚ โ”œโ”€โ”€ controllers/
โ”‚ โ”‚ โ”œโ”€โ”€ models/
โ”‚ โ”‚ โ”œโ”€โ”€ middleware/
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ auth.js
โ”‚ โ”‚ โ”œโ”€โ”€ services/
โ”‚ โ”‚ โ””โ”€โ”€ utils/
โ”‚ โ”œโ”€โ”€ .env.example
โ”‚ โ”œโ”€โ”€ package.json
โ”‚ โ””โ”€โ”€ package-lock.json
```

---

## ๐Ÿ”ง Core Backend Modules

### ๐Ÿ” Authentication Module
- JWT access and refresh token system
- Secure password hashing with bcrypt
- Token rotation and expiry management
- Role-based access control (Admin/User)

### ๐Ÿ–ผ๏ธ Gallery Module
- Image upload via Multer middleware
- Cloud storage integration with Cloudinary
- Admin moderation and approval system
- Public gallery API for frontend display

### ๐Ÿ’ฌ Contact Module
- Form submissions stored in MongoDB
- Automated email notifications via Gmail SMTP
- Input validation and sanitization
- Admin dashboard for message management

### โญ Testimonials Module
- User-submitted feedback collection
- Admin approval workflow
- Frontend carousel integration with Swiper.js
- Rating and comment system

### ๐Ÿ“Š Metrics & Analytics
- Real-time donation impact statistics
- Daily auto-updated counters
- Campaign performance tracking
- Public API for frontend display

### ๐Ÿ“ Campaign Management
- Create and manage donation campaigns
- Category-based organization
- Active/inactive status tracking
- API endpoints for campaign data

---

## ๐Ÿš€ Getting Started

### Prerequisites

- Node.js (v14 or higher)
- MongoDB Atlas account
- Cloudinary account
- Gmail account with App Password

### Installation

**1. Clone the Repository**

```bash
git clone https://github.com/TanushreeSarkar/uplifters-net.git
cd uplifters-net
```

**2. Backend Setup**

```bash
cd backend
npm install
cp .env.example .env
```

**3. Configure Environment Variables**

Edit the `.env` file with your credentials:

```env
PORT=5000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
JWT_REFRESH_SECRET=your_refresh_secret
CLOUDINARY_CLOUD_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_key
CLOUDINARY_API_SECRET=your_cloudinary_secret
EMAIL_USER=your_gmail@gmail.com
EMAIL_PASS=your_gmail_app_password
FRONTEND_URL=http://localhost:3000
```

**4. Start Development Server**

```bash
npm run dev
```

Backend runs on `http://localhost:5000`

**5. Frontend Setup**

Simply open `frontend/index.html` in a browser or use a live server:

```bash
cd frontend
npx live-server
```

---

## ๐ŸŒ Deployment

### Backend Deployment on Render

1. Create a new Web Service on [Render](https://render.com)
2. Connect your GitHub repository
3. Configure build settings:
- **Build Command:** `npm install`
- **Start Command:** `npm start`
4. Add environment variables from `.env`
5. Deploy and note your backend URL
6. Test health endpoint: `https://your-app.onrender.com/health`

### Frontend Deployment on Vercel

1. Import project on [Vercel](https://vercel.com)
2. Update API base URL in `frontend/index.html`:

```html

```

3. Deploy and your site is live!

---

## ๐ŸŒ API Endpoints

### Authentication

| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| POST | `/api/auth/register` | Register new user | No |
| POST | `/api/auth/login` | Login and get JWT | No |
| POST | `/api/auth/refresh` | Refresh access token | Yes |
| POST | `/api/auth/logout` | Logout user | Yes |

### Gallery

| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/api/gallery` | Fetch all gallery items | No |
| POST | `/api/gallery` | Upload image | Admin |
| DELETE | `/api/gallery/:id` | Delete image | Admin |

### Contact

| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| POST | `/api/contact` | Submit contact form | No |
| GET | `/api/contact` | Get all messages | Admin |

### Testimonials

| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/api/testimonials` | Get approved testimonials | No |
| POST | `/api/testimonials` | Submit testimonial | Yes |
| PATCH | `/api/testimonials/:id` | Approve testimonial | Admin |

### Metrics

| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/api/metrics` | Get platform metrics | No |
| PUT | `/api/metrics` | Update metrics | Admin |

### Campaigns

| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/api/campaigns` | Get all campaigns | No |
| POST | `/api/campaigns` | Create campaign | Admin |
| PATCH | `/api/campaigns/:id` | Update campaign | Admin |

**Testing:** Use [Postman](https://www.postman.com/) or [Thunder Client](https://www.thunderclient.com/) for API testing.

---

## ๐Ÿงช Testing

```bash
# Run tests
npm test

# Run tests with coverage
npm run test:coverage

# Run linter
npm run lint
```

---

## ๐Ÿค Contributing

We love contributions! Here's how you can help:

1. **Fork the repository**
2. **Create a feature branch**
```bash
git checkout -b feature/amazing-feature
```
3. **Commit your changes**
```bash
git commit -m "Add amazing feature"
```
4. **Push to the branch**
```bash
git push origin feature/amazing-feature
```
5. **Open a Pull Request**

### Contribution Guidelines

- Write clean, readable code
- Follow existing code style
- Add comments for complex logic
- Test your changes thoroughly
- Update documentation as needed

---

## ๐Ÿ› Known Issues

- Gallery images may load slowly on first visit (caching improves subsequent loads)
- Email notifications may be delayed during high traffic

---

## ๐Ÿ“ Future Enhancements

- [ ] Payment gateway integration (Razorpay/Stripe)
- [ ] Multi-language support
- [ ] Mobile app (React Native)
- [ ] Advanced analytics dashboard
- [ ] SMS notifications
- [ ] Social media integration
- [ ] Volunteer management system

---

## ๐Ÿ‘จโ€๐Ÿ’ป Developer

**Tanushree Sarkar**
Full-Stack Developer & Creator of Uplifters.Net

๐Ÿ“ง Email: [2k22.csaiml.2212256@gmail.com](mailto:2k22.csaiml.2212256@gmail.com)
๐Ÿ”— GitHub: [@TanushreeSarkar](https://github.com/TanushreeSarkar)
๐Ÿ”— LinkedIn: [Tanushree Sarkar](https://www.linkedin.com/in/tanushree-sarkar-32635624b)

---

## ๐Ÿ“„ License

This project is licensed under the **MIT License** โ€“ see the [LICENSE](LICENSE) file for details.

Free to use for personal and commercial projects.

---

## ๐Ÿ™ Acknowledgments

- Bootstrap for responsive design components
- Cloudinary for seamless image management
- MongoDB Atlas for reliable database hosting
- Render & Vercel for deployment infrastructure
- All contributors and supporters of this project

---

## ๐Ÿ’– Final Thoughts

> **"Technology becomes truly powerful when it uplifts humanity."**

This platform was built with empathy, purpose, and passion to create real positive impact in the world.

Every donation, every testimonial, and every connection made through this platform represents hope and humanity coming together.

**Thank you for being part of this journey.** ๐ŸŒŸ

---


Made with โค๏ธ by Tanushree Sarkar



โญ Star this repo if you found it helpful!