A modern, full-stack Learning Management System built with Node.js, Express, and AstraDB. Features include user authentication, course management, community interactions, real-time messaging, and calendar-based event scheduling.
Coding meets collaboration. Level up your skills through weekly challenges, open-source teamwork, live sessions, Discussions & peer events!
- User Registration & Login with JWT authentication
- Profile Management with image upload (converted to DataURI)
- Role-based Access (Student Learners & Student Lecturers)
- Verified Status system
- User Status indicators (online, busy, studying, coding, etc.)
- Post Creation with rich content, images, and tags
- Comments System with likes and replies
- Real-time Interactions
- Trending Topics and hashtag support
- Study Groups functionality
- User Search and discovery
- Event Scheduling (for instructors)
- Calendar Views (week, month, mini-calendar)
- Event Registration with capacity limits
- Real-time Updates of event status
- Event Filtering by type and category
- Direct Messaging between users
- Message History persistence
- Real-time Notifications
- Message Status tracking
- Personalized Dashboard with progress tracking
- Upcoming Events overview
- Community Highlights
- Study Statistics and progress bars
- Quick Actions for common tasks
- Node.js with Express.js
- AstraDB (Cassandra) for data persistence
- JWT for authentication
- bcryptjs for password hashing
- Multer for file uploads
- CORS for cross-origin requests
- Vanilla JavaScript (ES6+)
- CSS3 with CSS Grid and Flexbox
- Font Awesome for icons
- Google Fonts (Inter, Space Mono)
- Responsive Design for all devices
users
- User profiles and authenticationposts
- Community posts and contentcomments
- Post comments and repliesevents
- Calendar events and classesmessages
- Direct messages between usersnotifications
- System notificationsstudy_groups
- Study group managementuser_progress
- Learning progress tracking
openrockets.me/
├── server.js # Main backend server
├── package.json # Dependencies and scripts
├── .env # Environment variables
├── landing.html # Landing page
├── dashboard.html # User dashboard
├── community.html # Community page
├── calendar.html # Calendar page
├── about.html # About page (PDF viewer)
├── scripts/
│ ├── api.js # API client and utilities
│ ├── auth.js # Authentication modals and forms
│ ├── landing.js # Landing page interactions
│ ├── dashboard.js # Dashboard UI functionality
│ ├── dashboard-integration.js # Dashboard backend integration
│ ├── community.js # Community UI functionality
│ ├── community-integration.js # Community backend integration
│ ├── calendar.js # Calendar UI functionality
│ └── calendar-integration.js # Calendar backend integration
├── styles/
│ ├── lms-main.css # Landing page styles
│ ├── dashboard.css # Dashboard styles
│ ├── community.css # Community styles
│ ├── calendar.css # Calendar styles
│ ├── components.css # Shared components
│ ├── main.css # Global styles
│ └── responsive.css # Mobile responsiveness
└── v/ # Static assets (images, etc.)
- Node.js (v14 or higher)
- npm or yarn
- AstraDB account and database
git clone <repository-url>
cd openrockets.me
npm install
The .env
file is already configured with AstraDB credentials:
ASTRA_DB_ID=35eb48e5-0472-4568-9f3d-a452a1c8ab2c
ASTRA_DB_KEYSPACE=default_keyspace
ASTRA_DB_API_ENDPOINT=https://35eb48e5-0472-4568-9f3d-a452a1c8ab2c-eu-west-1.apps.astra.datastax.com
ASTRA_DB_APPLICATION_TOKEN=AstraCS:lNoNTboZjvbvFGrJWTyJwZqp:8a244f6afa4acf88c1a43b4c9e25e6a56dc384caa5176b3141e93dc9375c5c4a
# Development mode
npm run dev
# Production mode
npm start
- Open http://localhost:3000 in your browser
- Create an account or sign in
- Explore the features!
POST /api/auth/register
- User registrationPOST /api/auth/login
- User loginGET /api/auth/profile
- Get user profilePUT /api/auth/profile
- Update user profile
POST /api/posts
- Create new postGET /api/posts
- Get posts (with filtering)GET /api/posts/:id
- Get single postPOST /api/posts/:id/like
- Like/unlike postPOST /api/posts/:id/comments
- Add commentGET /api/posts/:id/comments
- Get comments
POST /api/events
- Create new event (instructors only)GET /api/events
- Get events (with filtering)POST /api/events/:id/join
- Join event
POST /api/messages
- Send messageGET /api/messages/:userId
- Get conversation
GET /api/search
- Search posts, events, and users
- Dark Mode by default with Microsoft Teams inspiration
- Responsive Layout that works on all devices
- Smooth Animations and micro-interactions
- Consistent Typography using Inter and Space Mono fonts
- Programming-focused color scheme and iconography
- Modal Dialogs for forms and details
- Loading States with spinners and skeletons
- Toast Notifications for user feedback
- Dropdown Menus for navigation
- Image Galleries with lightbox functionality
- Real-time Updates without page refresh
- Keyboard Navigation support
- ARIA Labels for screen readers
- Focus Management in modals
- Color Contrast compliance
- Responsive Text sizing
- JWT Authentication with secure token storage
- Password Hashing using bcryptjs
- Input Validation on frontend and backend
- File Upload Security with type checking
- CORS Configuration for cross-origin requests
- SQL Injection Prevention through parameterized queries
- Responsive Grid layouts
- Touch-friendly interface elements
- Mobile-optimized navigation
- Swipe Gestures for image galleries
- Adaptive Typography for small screens
npm run dev
npm start
Make sure to set these in production:
PORT
- Server port (default: 3000)JWT_SECRET
- Secret key for JWT tokensASTRA_DB_*
- AstraDB connection details
- Register with your email and create a profile
- Browse Events in the calendar to find interesting classes
- Join Classes by clicking the join button
- Participate in community discussions
- Track Progress on your dashboard
- Register as a "Student Lecturer"
- Create Events using the calendar interface
- Manage Attendees and event capacity
- Share Knowledge through community posts
- Monitor Engagement through analytics
- Create Posts with rich content and images
- Comment and Like to engage with content
- Use Hashtags to categorize content
- Join Study Groups for collaborative learning
- Follow Trending Topics to stay updated
-
Database Connection Error
- Verify AstraDB credentials in
.env
- Check network connectivity
- Ensure keyspace exists
- Verify AstraDB credentials in
-
Authentication Issues
- Clear browser localStorage
- Check JWT token expiration
- Verify user credentials
-
File Upload Problems
- Check file size (max 5MB)
- Verify file type (images only)
- Ensure proper form encoding
- Use browser DevTools for debugging
- Check console for JavaScript errors
- Monitor network requests in DevTools
- Use Postman for API testing
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details
For issues and questions:
- Create an issue on GitHub
- Contact the development team
- Check the documentation
OpenRockets LMS - Empowering the next generation of programmers through collaborative learning! 🚀