Skip to content

Repository files navigation

Connecto - SDG Collaboration Platform

Connecting organizations worldwide to collaborate on UN Sustainable Development Goals

Production Ready License

🌍 Overview

Connecto is a full-stack web platform that facilitates collaboration between organizations, NGOs, educational institutions, and government bodies working toward the UN's 17 Sustainable Development Goals (SDGs). The platform enables resource sharing, project management, partnership building, and impact tracking.

✨ Key Features

  • πŸ” Secure Authentication - Google OAuth & JWT-based auth with refresh tokens
  • 🏒 Organization Management - Create and manage verified organization profiles
  • πŸ“Š Project Tracking - Manage SDG-aligned projects with milestones
  • 🀝 Resource Exchange - Match resource requests with offers (funding, volunteers, materials, expertise)
  • πŸ’¬ Real-time Messaging - Socket.io powered communication
  • πŸ“ˆ Analytics Dashboard - Track contributions and SDG progress
  • πŸ‘₯ Partnership Discovery - Find and connect with complementary organizations
  • 🎨 Modern UI - Responsive design with Framer Motion animations

πŸ› οΈ Tech Stack

Frontend

  • React 19.2.0 + Vite 7.2.4
  • Tailwind CSS + shadcn/ui
  • Framer Motion
  • React Router DOM
  • Axios + React Hook Form + Zod

Backend

  • Node.js + Express 5.2.1
  • MongoDB + Mongoose 9.0.0
  • Socket.io 4.8.1
  • Passport.js (Google OAuth)
  • JWT Authentication
  • Cloudinary (file uploads)

πŸ“ Project Structure

Connecto/
β”œβ”€β”€ client/                 # React frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ api/           # API service layer
β”‚   β”‚   β”œβ”€β”€ components/    # Reusable components
β”‚   β”‚   β”œβ”€β”€ context/       # React Context
β”‚   β”‚   β”œβ”€β”€ pages/         # Page components
β”‚   β”‚   └── lib/           # Utilities
β”‚   └── .env.example       # Environment template
β”‚
β”œβ”€β”€ server/                # Express backend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ config/        # Configuration
β”‚   β”‚   β”œβ”€β”€ controllers/   # Request handlers
β”‚   β”‚   β”œβ”€β”€ middlewares/   # Express middleware
β”‚   β”‚   β”œβ”€β”€ models/        # Mongoose models
β”‚   β”‚   β”œβ”€β”€ routes/        # API routes
β”‚   β”‚   └── services/      # Business logic
β”‚   └── .env.example       # Environment template
β”‚
└── Documentation/         # Guides and docs

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ and npm
  • MongoDB (local or Atlas)
  • Google OAuth credentials
  • Cloudinary account (for file uploads)

Installation

  1. Clone the repository
git clone https://github.com/lakshmanbhukya/connecto.git
cd connecto
  1. Set up the server
cd server
npm install
cp .env.example .env
# Edit .env with your credentials
npm run dev
  1. Set up the client
cd client
npm install
cp .env.example .env
# Edit .env with API URL
npm run dev
  1. Access the application

πŸ”§ Configuration

Environment Variables

Client (.env)

VITE_API_URL=http://localhost:5000

Server (.env)

PORT=5000
NODE_ENV=development
MONGO_URI=mongodb://localhost:27017/connecto
JWT_SECRET=your_jwt_secret_min_32_chars
JWT_REFRESH_SECRET=your_refresh_secret_min_32_chars
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_REDIRECT_URI=http://localhost:5000/api/auth/google/callback
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
SMTP_HOST=smtp-relay.brevo.com
SMTP_PORT=587
SMTP_USER=your_smtp_user
SMTP_PASS=your_smtp_password
EMAIL_FROM=Connecto <noreply@yourdomain.com>
CLIENT_URL=http://localhost:5173

See .env.example files for complete configuration.

πŸ§ͺ Testing

Integration Tests

# Make sure server is running
cd server
npm run dev

# Run integration tests
cd ..
node test-integration.js

E2E Tests (Playwright)

cd client
npx playwright test

πŸ“š Documentation

πŸ”’ Security

  • JWT tokens stored in httpOnly cookies
  • Password hashing with bcryptjs
  • Input validation with express-validator
  • Rate limiting on API endpoints
  • CORS configuration
  • Helmet security headers
  • XSS and SQL injection protection

🚒 Deployment

Quick Deploy Options

Vercel (Frontend) + Render (Backend)

# Frontend
vercel --prod

# Backend
git push render main

Railway (Full Stack)

railway up

Docker

docker-compose up -d

See DEPLOYMENT_GUIDE.md for detailed instructions.

πŸ“Š API Endpoints

Authentication

  • POST /api/auth/register - Register new user
  • POST /api/auth/login - Login user
  • GET /api/auth/me - Get current user
  • POST /api/auth/refresh - Refresh access token
  • GET /api/auth/google - Google OAuth

Organizations

  • GET /api/orgs - List organizations
  • POST /api/orgs - Create organization
  • GET /api/orgs/:id - Get organization
  • PUT /api/orgs/:id - Update organization

Projects

  • GET /api/projects - List projects
  • POST /api/projects - Create project
  • GET /api/projects/:id - Get project details
  • POST /api/projects/:id/milestones - Add milestone

Resources

  • GET /api/resources - List resources
  • POST /api/resources - Create resource
  • POST /api/resources/:id/accept - Accept resource

See full API documentation for complete endpoint list.

🀝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • UN Sustainable Development Goals
  • shadcn/ui for beautiful components
  • All contributors and supporters

Made with ❀️ for a sustainable future

About

No description, website, or topics provided.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages