Live Demo: https://arms-v4.vercel.app
ARMS v4 (Academic Resource Management System) is a next-generation educational platform engineered for modern academic workflows. Building on the foundation of ARMS v3, this major upgrade introduces a robust, scalable architecture powered by Redux Toolkit, Prisma ORM.
ARMS is designed to empower students with effortless, anonymous access to subject-wise study materials. Students can conveniently browse and download PDF resources uploaded by authorized faculty, benefiting from a centralized, user-friendly platform that streamlines academic resource management. The intuitive interface ensures a seamless experience for both students and facultyβenabling quick resource discovery, easy uploads, and organized content across institutions, courses, and subjects.
- Student Access: Streamlined registration with academic email verification
- Faculty Management: Role-based permissions with content approval workflows
- Admin Dashboard: Complete institutional oversight and user management
- Session Security: JWT-based authentication with automatic session management
- Hierarchical Organization: Institution β Course β Subject β Unit β Document structure
- Smart Search: Advanced filtering across all academic levels with instant results
- Recent Activity: Quick access to recently visited subjects and downloaded materials
- Bulk Operations: Faculty can upload multiple documents simultaneously
- Responsive Design: Optimized for desktop, tablet, and mobile devices
- Intuitive Navigation: Clean sidebar navigation with breadcrumb trails
- Real-time Updates: Instant UI updates with optimistic state management
- Accessible Interface: WCAG-compliant design supporting diverse user needs
- Usage Analytics: Track resource popularity and engagement metrics
- Dashboard Reporting: Faculty can monitor their content performance
- Admin Insights: Institution-wide analytics for strategic planning
- Intelligent Caching: Automatic request optimization and background updates
- Offline Capability: Downloaded resources available without internet
- Scalable Architecture: Supports thousands of concurrent users
- Type-Safe Operations: Eliminates runtime errors through comprehensive TypeScript integration
- State Management: Migrated from Zustand + TanStack Query to Redux Toolkit + RTK Query
- Database Layer: Replaced Mongoose with Prisma ORM for type-safe database operations
- Authentication: Implemented NextAuth with bcrypt for enterprise-grade security
- UI Framework: Upgraded to ShadCN UI with consistent design system
- 70% reduction in redundant API calls through intelligent caching
- 60% less boilerplate code with auto-generated RTK Query hooks
- Optimistic updates for instant UI responsiveness
- Bundle optimization through advanced tree-shaking and code splitting
- Modern Interface: Clean, accessible design with intuitive navigation
- Smart Search: Advanced filtering and discovery across academic hierarchy
- Mobile Optimization: Responsive design for all device types
- Loading States: Skeleton screens and progressive loading for better perceived performance
- Node.js 18+
- npm or yarn or bun
- MongoDB database (local or cloud)
# Clone the repository
git clone https://github.com/ChiragChrg/arms-v4.git
cd arms-v4
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Generate Prisma client
npm run prisma:generate
# Start development server
npm run dev
Create a .env.local
file with the following variables:
# Database
MONGODB_URI="mongodb://localhost:27017/arms-v4"
# NextAuth
NEXTAUTH_SECRET="your-secret-key"
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_URL_INTERNAL="http://localhost:3000"
JWT_SECRET_KEY="your-jwt-secret-key"
AUTH_SECRET="your-auth-secret-key"
# Auth Providers
GITHUB_ID="your-github-client-id"
GITHUB_SECRET="your-github-client-secret"
GOOGLE_ID="your-google-client-id"
GOOGLE_SECRET="your-google-client-secret"
# Email Service (for password resets)
NEXT_PUBLIC_EMAILJS_PUBLIC_KEY="smtp.gmail.com"
NEXT_PUBLIC_EMAILJS_SERVICE_ID=587
NEXT_PUBLIC_EMAILJS_FACULTY_TEMPLATE="your-email@gmail.com"
NEXT_PUBLIC_EMAILJS_PASSWORD_RESET_TEMPLATE="your-app-password"
# File Storage
EDGE_STORE_ACCESS_KEY="your-edgestore-key"
EDGE_STORE_SECRET_KEY="your-edgestore-secret"
arms-v4/
βββ prisma/
β βββ schema/ # Database schema definitions
βββ public/
β βββ icons/ # Application icons for PWA
β βββ screenshots/ # Preview images & documentation assets
βββ src/
β βββ app/ # Next.js App Router structure
β β βββ (auth)/
β β βββ (user)/
β β βββ aboutus/
β β βββ api/
β β βββ institutions/
β βββ assets/ # Static design assets
β β βββ Icons/
β β βββ SVGs/
β βββ components/ # Reusable UI components
β β βββ Cards/
β β βββ CustomUI/
β β βββ Forms/
β β βββ Modals/
β β βββ ui/
β βββ hooks/ # Custom React hooks
β βββ lib/ # Library configurations
β βββ providers/ # App-level providers
β βββ store/ # Redux Toolkit
β βββ utils/ # Utility functions
We welcome contributions from the community! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow TypeScript best practices with strict type checking
- Use conventional commits for clear commit messages
- Ensure 100% test coverage for new features
- Follow accessibility guidelines (WCAG 2.1 AA)
- Update documentation for any API changes
# Development
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
# Database
npm run prisma:generate # Generate Prisma client
npm run prisma:push # Push schema changes to database
npm run prisma:studio # Open Prisma Studio (database GUI)
# Code Quality
npm run lint # Run ESLint
npm run type-check # TypeScript type checking
npm run format # Format code with Prettier
This project is licensed under the MIT License.
You are free to use, copy, modify, and distribute this project for any purpose, provided that:
- The original copyright is included.
- The MIT License text is retained in all copies or substantial portions of the software.
- Visible credit is given to ChiragChrg somewhere within your project (e.g., in the README, footer, or documentation).
Proper attribution helps acknowledge the effort invested in this project and upholds the values of integrity, transparency, and the openβsource community.