Skip to content

hellovaibhav/AcademiaStacks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

267 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AcademiaStacks πŸ“š

A comprehensive academic resource management platform that allows students to upload, organize, and share educational materials including notes, assignments, previous year questions (PYQs), and handouts.

🌟 Features

  • Material Management: Upload and organize academic materials by category
  • User Authentication: Secure registration and login system
  • Admin Dashboard: Comprehensive admin panel for content management
  • Material Categories: Notes, Assignments, PYQs, Handouts
  • Search & Filter: Advanced filtering and search capabilities
  • PDF Support: Full PDF viewing and thumbnail generation
  • Responsive Design: Mobile-friendly interface
  • Security: Email validation, temporary email prevention, and security scanning

πŸš€ Tech Stack

Frontend

  • React 18 - Modern UI library
  • Tailwind CSS - Utility-first CSS framework
  • Framer Motion - Animation library
  • Axios - HTTP client
  • React Router - Client-side routing

Backend

  • Node.js - Runtime environment
  • Express.js - Web framework
  • MongoDB - Database
  • JWT - Authentication
  • Multer - File upload handling
  • Express Validator - Input validation

DevOps & Quality

  • GitHub Actions - CI/CD pipeline
  • ESLint - Code linting
  • Husky - Git hooks
  • Trivy - Security scanning
  • CodeQL - Code analysis

πŸ› οΈ Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn
  • MongoDB (local or cloud)
  • Git
  • React

Installation

  1. Clone the repository

    git clone https://github.com/hellovaibhav/AcademiaStacks.git
    cd AcademiaStacks
  2. Install dependencies

    # Install API dependencies
    cd api
    npm install
    
    # Install client dependencies
    cd ../client
    npm install
  3. Environment Setup

    # Copy environment files
    cp api/.env.example api/.env
    cp client/.env.example client/.env.local
    
    # Update the environment variables in both files.

    πŸ“– For a detailed setup guide, see our Developer Guide.

  4. Start the development servers

    # Terminal 1 - Start API server
    cd api
    npm run dev
    
    # Terminal 2 - Start client server
    cd client
    npm start
  5. Access the application

🀝 Contributing

We welcome contributions from the community! We have a detailed guide to help you get started.

πŸ“– Please read our Contribution Guide to learn how to contribute.

πŸ“‹ Code Standards

JavaScript/React Standards

  • Use ES6+ features
  • Prefer const and let over var
  • Use arrow functions for callbacks
  • Destructure objects and arrays
  • Use template literals for strings
  • Follow React best practices

Code Style

  • 2 spaces for indentation
  • Single quotes for strings
  • Semicolons at end of statements
  • Trailing commas in objects/arrays
  • Maximum line length: 120 characters

File Naming

  • Components: PascalCase.jsx
  • Utilities: camelCase.js
  • Constants: UPPER_SNAKE_CASE.js
  • CSS: kebab-case.css

πŸ”’ Security Guidelines

Before Committing

  • No hardcoded secrets or credentials
  • Use environment variables for sensitive data
  • Validate all user inputs
  • Sanitize data before database operations

Security Checks

  • Run npm audit before committing
  • Check for console.log statements
  • Verify no secrets in code
  • Ensure proper error handling

πŸ§ͺ Testing

Running Tests

# Run all tests
npm test

# Run tests with coverage
npm run test:coverage

# Run tests in watch mode
npm run test:watch

Writing Tests

  • Write unit tests for utilities
  • Write integration tests for API endpoints
  • Write component tests for React components
  • Aim for >80% code coverage

πŸ“ Project Structure

AcademiaStacks/
β”œβ”€β”€ api/                    # Backend API
β”‚   β”œβ”€β”€ controllers/        # Route controllers
β”‚   β”œβ”€β”€ models/            # Database models
β”‚   β”œβ”€β”€ routes/            # API routes
β”‚   β”œβ”€β”€ utils/             # Utility functions
β”‚   └── index.js           # Server entry point
β”œβ”€β”€ client/                # Frontend React app
β”‚   β”œβ”€β”€ public/            # Static assets
β”‚   β”œβ”€β”€ src/               # Source code
β”‚   β”‚   β”œβ”€β”€ components/    # React components
β”‚   β”‚   β”œβ”€β”€ pages/         # Page components
β”‚   β”‚   β”œβ”€β”€ utils/         # Utility functions
β”‚   β”‚   └── App.js         # Main app component
β”‚   └── package.json       # Client dependencies
β”œβ”€β”€ .github/               # GitHub workflows and configs
β”‚   β”œβ”€β”€ workflows/         # CI/CD pipelines
β”‚   β”œβ”€β”€ CODEOWNERS         # Code ownership
β”‚   └── dependabot.yml     # Dependency updates
β”œβ”€β”€ .husky/                # Git hooks
└── README.md              # This file

🚦 CI/CD Pipeline

Automated Checks

  • ESLint: Code quality and style
  • Security Audit: Vulnerability scanning
  • Build Verification: Ensures code compiles
  • Test Execution: Runs test suite
  • Dependency Review: Checks for security issues

Branch Protection

  • No direct pushes to main or development
  • All changes must go through Pull Requests
  • Required reviews from code owners
  • All checks must pass before merging

πŸ› Reporting Issues

Bug Reports

  1. Check existing issues first
  2. Use the bug report template
  3. Include steps to reproduce
  4. Provide environment details
  5. Add screenshots if applicable

Feature Requests

  1. Check existing feature requests
  2. Use the feature request template
  3. Describe the use case
  4. Explain the expected behavior
  5. Consider implementation complexity

πŸ“ž Support

  • GitHub Issues: For bugs and feature requests
  • Discussions: For questions and general discussion
  • Email: [Your contact email]
  • Discord: [Your Discord server]

πŸ“„ License

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

πŸ™ Acknowledgments

  • Contributors who have helped build this project
  • Open source libraries and tools used
  • Community feedback and suggestions

πŸ“Š Project Status

  • Version: 2.0.0
  • Status: Active Development
  • Last Updated: [Current Date]
  • Contributors: [Number of contributors]

Happy Coding! πŸš€

If you have any questions or need help getting started, feel free to reach out to the maintainers or open an issue.

About

Study Material Sharing website specially made for IIITR.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

Languages