Acadify is a comprehensive learning platform built on the MERN stack (MongoDB, Express.js, React.js, Node.js) that connects teachers and students. Teachers can create and publish courses while students can browse, enroll, and engage with course content.
Access Acadify at: https://acadify-learning.vercel.app/
- Features
- Technologies Used
- Getting Started
- Project Structure
- User Roles & Capabilities
- API Documentation
- Contributing
- License
- Browse courses without login
- View course previews, descriptions, and instructor information
- User registration (as student or teacher)
- User authentication
- Personalized dashboard with progress tracking
- Course enrollment system
- Access to course materials, lessons, and quizzes
- Assignment submission
- View grades and feedback
- Profile management
- Course creation and management
- Upload and organize course materials
- Create assignments and quizzes
- Review and grade student submissions
- Track student progress
- Profile management
- React.js
- Redux for state management
- React Router for navigation
- Axios for API requests
- Tailwind CSS for styling
- Node.js
- Express.js
- MongoDB for database
- Mongoose for data modeling
- JWT for authentication
- Bcrypt for password hashing
- Jest
- React Testing Library
- Vercel: Frontend deployment at https://acadify-learning.vercel.app/
- Render: Backend deployment at https://acadify-learning-platform.onrender.com
- Node.js (v14.0.0 or later)
- npm or yarn
- MongoDB
- Clone the repository
git clone https://github.com/yourusername/acadify.git
cd acadify
- Install dependencies for both the frontend and the backend
# Install backend dependencies
npm install
# Install frontend dependencies
cd client
npm install
cd ..
- Set up environment variables
Create a
.env
file in the root directory and add:
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
PORT=5000
NODE_ENV=development
- Start the development server
# Run both frontend and backend concurrently
npm run dev
# Run only the backend
npm run server
# Run only the frontend
npm run client
In the project directory, you can run:
Runs the app in development mode.
Open http://localhost:3000 to view it in your browser.
The page will reload when you make changes.
You may also see any lint errors in the console.
Launches the test runner in interactive watch mode.
See the section about running tests for more information.
Builds the app for production to the build
folder.
Note: this is a one-way operation. Once you eject
, you can't go back!
acadify/
│
├── client/ # Frontend React application
│ ├── public/ # Public assets
│ ├── src/
│ │ ├── assets/ # Images, fonts, etc.
│ │ ├── components/ # Reusable components
│ │ ├── context/ # React context
│ │ ├── hooks/ # Custom hooks
│ │ ├── pages/ # Page components
│ │ ├── redux/ # Redux store setup
│ │ ├── services/ # API services
│ │ ├── utils/ # Utility functions
│ │ ├── App.js # Main application component
│ │ └── index.js # Entry point
│ └── package.json # Frontend dependencies
│
├── server/ # Backend Node.js/Express application
│ ├── config/ # Configuration files
│ ├── controllers/ # Request controllers
│ ├── middlewares/ # Express middlewares
│ ├── models/ # Mongoose models
│ ├── routes/ # API routes
│ ├── utils/ # Utility functions
│ └── server.js # Server entry point
│
├── .env # Environment variables
├── .gitignore # Git ignore file
├── package.json # Project dependencies and scripts
└── README.md # Project documentation
- Browse course catalog
- View course previews
- Register as student or teacher
- Log in to existing account
- Dashboard with enrolled courses
- Access full course content
- Submit assignments
- Take quizzes
- View grades and feedback
- Edit profile settings
- Create and publish courses
- Organize course materials
- Create assignments and quizzes
- Review student submissions
- Provide grades and feedback
- Track student progress
API documentation is available at /api/docs
when running the development server.
POST /api/auth/register
- Register a new userPOST /api/auth/login
- Login userGET /api/auth/profile
- Get user profile
GET /api/courses
- Get all courses (public)GET /api/courses/:id
- Get course details (public/private based on enrollment)POST /api/courses
- Create a new course (teachers only)PUT /api/courses/:id
- Update course (owner teacher only)DELETE /api/courses/:id
- Delete course (owner teacher only)
POST /api/courses/:id/enroll
- Enroll in a courseGET /api/enrollments
- Get user enrollments
GET /api/courses/:id/assignments
- Get course assignmentsPOST /api/courses/:id/assignments
- Create assignment (teachers only)POST /api/assignments/:id/submit
- Submit assignment (students only)
- Fork the repository
- Create your 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
This project is licensed under the MIT License - see the LICENSE file for details.
Built with love by Hafsa and Areen