Skip to content

anishkn04/AcadNet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ“ AcadNet - Academic Study Platform

Learn together, grow together - Join or build study groups tailored to your syllabus.

AcadNet is a comprehensive academic collaboration platform designed to connect students through structured study groups, resource sharing, and interactive discussions. Built with modern web technologies, it facilitates seamless academic collaboration and knowledge sharing.

✨ Key Features

πŸ”— Study Group Management

  • Create & Join Groups: Form study groups with custom syllabi and course structures
  • Public & Private Groups: Control group visibility and access
  • Anonymous Participation: Join groups without revealing your identity
  • Role-based Access: Admin and member roles with different permissions

πŸ“š Resource Sharing

  • File Upload & Management: Share notes, assignments, and study materials
  • Content Moderation: Admin approval system for shared resources
  • Topic Organization: Categorize resources by syllabus topics and subtopics
  • Like/Dislike System: Community-driven content rating

πŸ’¬ Discussion Forums

  • Group Forums: Dedicated discussion spaces for each study group
  • Threaded Conversations: Organized discussions with replies and nested comments
  • Pinned Threads: Highlight important discussions
  • Moderation Tools: Lock threads and manage conversations

πŸ‘€ User Management

  • Profile System: Complete user profiles with educational background
  • Authentication: Secure login with OAuth integration (GitHub)
  • User Reporting: Community moderation and safety features
  • Admin Dashboard: System administration tools

πŸ—οΈ Tech Stack

Backend

  • Framework: Express.js
  • Database: PostgreSQL with Sequelize ORM
  • Authentication: JWT + Passport.js (GitHub OAuth)
  • File Storage: Local file system with organized structure
  • Email: Nodemailer for OTP verification

Frontend

  • Framework: React 19 with TypeScript
  • Build Tool: Vite
  • Styling: Tailwind CSS
  • UI Components: Radix UI + Shadcn/UI
  • State Management: React Context API
  • Routing: React Router DOM

πŸš€ Getting Started

Prerequisites

Installation

  1. Clone the repository

    git clone https://github.com/anishkn04/AcadNet.git
    cd AcadNet
  2. Install dependencies

    npm install
  3. Database Setup

    # Create PostgreSQL database
    createdb acadnet
  4. Environment Configuration Create a .env file in the root directory:

    # PostgreSQL Database Configuration
    PG_HOST=localhost
    PG_PORT=5432
    PG_USER=your_postgres_user
    PG_PASSWORD=your_postgres_password
    PG_DATABASE=acadnet
    
    # JWT Secrets
    JWT_ACCESS_SECRET=your_jwt_access_secret
    JWT_REFRESH_SECRET=your_jwt_refresh_secret
    
    # GitHub OAuth Credentials (Optional)
    GITHUB_CLIENT_ID=your_github_client_id
    GITHUB_CLIENT_SECRET=your_github_client_secret
    
    # Email Configuration
    EMAIL=your_email@example.com
    EMAIL_PASSWORD=your_email_password
    
    # Server Configuration
    BACKEND_PORT=3000
  5. Start the Application

    # Backend server (Terminal 1)
    npm start
    
    # Frontend development server (Terminal 2)
    npm run dev
  6. Access the Application

    • Frontend: http://localhost:5173
    • Backend API: http://localhost:3000
    • API Documentation: http://localhost:3000/api-docs

πŸ“ Project Structure

AcadNet/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ controllers/         # Route handlers
β”‚   β”œβ”€β”€ models/             # Database models (Sequelize)
β”‚   β”œβ”€β”€ routes/             # API route definitions
β”‚   β”œβ”€β”€ services/           # Business logic layer
β”‚   β”œβ”€β”€ middlewares/        # Express middlewares
β”‚   β”œβ”€β”€ config/             # Database & app configuration
β”‚   β”œβ”€β”€ passport/           # OAuth strategies
β”‚   β”œβ”€β”€ utils/              # Utility functions
β”‚   └── validator/          # Input validation
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/     # React components
β”‚   β”‚   β”œβ”€β”€ pages/          # Page components
β”‚   β”‚   β”œβ”€β”€ services/       # API service functions
β”‚   β”‚   β”œβ”€β”€ hooks/          # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ types/          # TypeScript type definitions
β”‚   β”‚   β”œβ”€β”€ utils/          # Utility functions
β”‚   β”‚   └── data/           # Static data & constants
β”‚   └── public/             # Static assets
└── package.json

πŸ“‹ Available Scripts

# Development
npm start          # Start backend server with nodemon
npm run dev        # Start frontend development server
npm run build      # Build frontend for production
npm run preview    # Preview production build
npm run lint       # Run ESLint on frontend

# Testing
npm test          # Run tests (not yet configured)

πŸ”Œ API Endpoints

Authentication Routes (/api/v1/auth)

Method Endpoint Description Protected
POST /signup Register new user No
POST /login User login No
GET /github GitHub OAuth login No
POST /logout Logout user No
POST /refresh-token Refresh JWT token Yes
POST /otp-auth Send OTP verification No
POST /otp-verify Verify OTP No
POST /password-reset Reset password No

Study Groups (/api/v1/groups)

Method Endpoint Description Protected
GET / Get all groups Yes
POST /create Create new group Yes
GET /:groupCode Get group details Yes
POST /:groupCode/join Join a group Yes
POST /:groupCode/leave Leave a group Yes
POST /:groupCode/resources Upload resources Yes

Forum Routes (/api/v1/forum)

Method Endpoint Description Protected
GET /groups/:groupCode/forum Get group forum Yes
POST /groups/:groupCode/threads Create thread Yes
GET /threads/:threadId Get thread details Yes
POST /threads/:threadId/replies Create reply Yes

🌟 Key Features Deep Dive

Study Group Workflow

  1. Create Account - Register with email and complete profile
  2. Browse Groups - Discover existing study groups or create custom ones
  3. Join/Create - Join groups matching your courses or create new groups
  4. Collaborate - Share resources, participate in discussions
  5. Moderate - Admins manage content and members

Resource Management

  • Upload study materials with topic categorization
  • Admin approval system for quality control
  • Community rating system (likes/dislikes)
  • Organized storage by group and topic structure

Discussion System

  • Real-time forum discussions within study groups
  • Threaded conversations for organized communication
  • Moderation tools (pin/lock threads)
  • Anonymous participation options

πŸ›‘οΈ Security & Privacy

  • JWT Authentication: Secure token-based authentication
  • CSRF Protection: Cross-site request forgery protection
  • Input Validation: Comprehensive validation using express-validator
  • File Upload Security: Safe file handling with type validation
  • Privacy Controls: Anonymous participation and private groups

πŸ‘₯ Contributing Team

  • Rishav Chapagain
  • Anish Kumar Neupane
  • Rushab Risal
  • Nishan Paudel

πŸ”— Links


Built with ❀️ for academic collaboration

About

AcadNet

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5