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.
- 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
- React 18 - Modern UI library
- Tailwind CSS - Utility-first CSS framework
- Framer Motion - Animation library
- Axios - HTTP client
- React Router - Client-side routing
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB - Database
- JWT - Authentication
- Multer - File upload handling
- Express Validator - Input validation
- GitHub Actions - CI/CD pipeline
- ESLint - Code linting
- Husky - Git hooks
- Trivy - Security scanning
- CodeQL - Code analysis
- Node.js (v18 or higher)
- npm or yarn
- MongoDB (local or cloud)
- Git
- React
-
Clone the repository
git clone https://github.com/hellovaibhav/AcademiaStacks.git cd AcademiaStacks -
Install dependencies
# Install API dependencies cd api npm install # Install client dependencies cd ../client npm install
-
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.
-
Start the development servers
# Terminal 1 - Start API server cd api npm run dev # Terminal 2 - Start client server cd client npm start
-
Access the application
- Frontend: http://localhost:3000
- API: http://localhost:8800
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.
- Use ES6+ features
- Prefer
constandletovervar - Use arrow functions for callbacks
- Destructure objects and arrays
- Use template literals for strings
- Follow React best practices
- 2 spaces for indentation
- Single quotes for strings
- Semicolons at end of statements
- Trailing commas in objects/arrays
- Maximum line length: 120 characters
- Components:
PascalCase.jsx - Utilities:
camelCase.js - Constants:
UPPER_SNAKE_CASE.js - CSS:
kebab-case.css
- No hardcoded secrets or credentials
- Use environment variables for sensitive data
- Validate all user inputs
- Sanitize data before database operations
- Run
npm auditbefore committing - Check for console.log statements
- Verify no secrets in code
- Ensure proper error handling
# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run tests in watch mode
npm run test:watch- Write unit tests for utilities
- Write integration tests for API endpoints
- Write component tests for React components
- Aim for >80% code coverage
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
- 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
- No direct pushes to
mainordevelopment - All changes must go through Pull Requests
- Required reviews from code owners
- All checks must pass before merging
- Check existing issues first
- Use the bug report template
- Include steps to reproduce
- Provide environment details
- Add screenshots if applicable
- Check existing feature requests
- Use the feature request template
- Describe the use case
- Explain the expected behavior
- Consider implementation complexity
- GitHub Issues: For bugs and feature requests
- Discussions: For questions and general discussion
- Email: [Your contact email]
- Discord: [Your Discord server]
This project is licensed under the MIT License - see the LICENSE file for details.
- Contributors who have helped build this project
- Open source libraries and tools used
- Community feedback and suggestions
- 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.