Skip to content

Commit 272ac6d

Browse files
Merge pull request #23 from OpenRockets/main
updated
2 parents 338e665 + c035bdf commit 272ac6d

File tree

4,069 files changed

+346699
-10
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

4,069 files changed

+346699
-10
lines changed

.env

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
ASTRA_DB_ID=35eb48e5-0472-4568-9f3d-a452a1c8ab2c
2+
ASTRA_DB_KEYSPACE=default_keyspace
3+
ASTRA_DB_API_ENDPOINT=https://35eb48e5-0472-4568-9f3d-a452a1c8ab2c-eu-west-1.apps.astra.datastax.com
4+
ASTRA_DB_APPLICATION_TOKEN=AstraCS:lNoNTboZjvbvFGrJWTyJwZqp:8a244f6afa4acf88c1a43b4c9e25e6a56dc384caa5176b3141e93dc9375c5c4a
5+
6+
# JWT Secret
7+
JWT_SECRET=openrockets_secret_key_2024_super_secure
8+
9+
# Server Configuration
10+
PORT=3000

.gitignore

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Node.js dependencies
2+
node_modules/
3+
4+
# Logs
5+
logs/
6+
*.log
7+
npm-debug.log*
8+
yarn-debug.log*
9+
yarn-error.log*
10+
11+
# Environment variables
12+
.env
13+
.env.*
14+
15+
# Secret files
16+
*.key
17+
*.pem
18+
*.crt
19+
20+
# IDE specific files
21+
.vscode/
22+
*.code-workspace
23+
24+
# OS generated files
25+
.DS_Store
26+
Thumbs.db
27+
28+
# Build output
29+
dist/
30+
build/
31+
32+
# Temporary files
33+
*.tmp
34+
*.temp
35+
36+
# Other
37+
*.bak
38+
*.swp
39+
*.swo
40+
*.orig
41+
*.rej
42+
*.un~
43+
*.sublime-workspace
44+
*.sublime-project
45+
46+
# Ignore specific files in this project
47+
form/js/emailjs-config.js
48+
form/js/firebase-config.js

README.md

Lines changed: 297 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,304 @@
1-
![preview](https://github.com/user-attachments/assets/c6b74ca6-0056-41fe-b895-41ccc0d123cc)
1+
# OpenRockets LMS - Complete Learning Management System
2+
3+
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.
24

5+
![preview](https://github.com/user-attachments/assets/c6b74ca6-0056-41fe-b895-41ccc0d123cc)
36

47
### Coding meets collaboration. Level up your skills through weekly challenges, open-source teamwork, live sessions, Discussions & peer events!
58

9+
## 🚀 Features
10+
11+
### Authentication & User Management
12+
- **User Registration & Login** with JWT authentication
13+
- **Profile Management** with image upload (converted to DataURI)
14+
- **Role-based Access** (Student Learners & Student Lecturers)
15+
- **Verified Status** system
16+
- **User Status** indicators (online, busy, studying, coding, etc.)
17+
18+
### Community Features
19+
- **Post Creation** with rich content, images, and tags
20+
- **Comments System** with likes and replies
21+
- **Real-time Interactions**
22+
- **Trending Topics** and hashtag support
23+
- **Study Groups** functionality
24+
- **User Search** and discovery
25+
26+
### Calendar & Events
27+
- **Event Scheduling** (for instructors)
28+
- **Calendar Views** (week, month, mini-calendar)
29+
- **Event Registration** with capacity limits
30+
- **Real-time Updates** of event status
31+
- **Event Filtering** by type and category
32+
33+
### Messaging System
34+
- **Direct Messaging** between users
35+
- **Message History** persistence
36+
- **Real-time Notifications**
37+
- **Message Status** tracking
38+
39+
### Dashboard Features
40+
- **Personalized Dashboard** with progress tracking
41+
- **Upcoming Events** overview
42+
- **Community Highlights**
43+
- **Study Statistics** and progress bars
44+
- **Quick Actions** for common tasks
45+
46+
## 🛠 Tech Stack
47+
48+
### Backend
49+
- **Node.js** with Express.js
50+
- **AstraDB** (Cassandra) for data persistence
51+
- **JWT** for authentication
52+
- **bcryptjs** for password hashing
53+
- **Multer** for file uploads
54+
- **CORS** for cross-origin requests
55+
56+
### Frontend
57+
- **Vanilla JavaScript** (ES6+)
58+
- **CSS3** with CSS Grid and Flexbox
59+
- **Font Awesome** for icons
60+
- **Google Fonts** (Inter, Space Mono)
61+
- **Responsive Design** for all devices
62+
63+
### Database Collections
64+
- `users` - User profiles and authentication
65+
- `posts` - Community posts and content
66+
- `comments` - Post comments and replies
67+
- `events` - Calendar events and classes
68+
- `messages` - Direct messages between users
69+
- `notifications` - System notifications
70+
- `study_groups` - Study group management
71+
- `user_progress` - Learning progress tracking
72+
73+
## 📁 Project Structure
74+
75+
```
76+
openrockets.me/
77+
├── server.js # Main backend server
78+
├── package.json # Dependencies and scripts
79+
├── .env # Environment variables
80+
├── landing.html # Landing page
81+
├── dashboard.html # User dashboard
82+
├── community.html # Community page
83+
├── calendar.html # Calendar page
84+
├── about.html # About page (PDF viewer)
85+
├── scripts/
86+
│ ├── api.js # API client and utilities
87+
│ ├── auth.js # Authentication modals and forms
88+
│ ├── landing.js # Landing page interactions
89+
│ ├── dashboard.js # Dashboard UI functionality
90+
│ ├── dashboard-integration.js # Dashboard backend integration
91+
│ ├── community.js # Community UI functionality
92+
│ ├── community-integration.js # Community backend integration
93+
│ ├── calendar.js # Calendar UI functionality
94+
│ └── calendar-integration.js # Calendar backend integration
95+
├── styles/
96+
│ ├── lms-main.css # Landing page styles
97+
│ ├── dashboard.css # Dashboard styles
98+
│ ├── community.css # Community styles
99+
│ ├── calendar.css # Calendar styles
100+
│ ├── components.css # Shared components
101+
│ ├── main.css # Global styles
102+
│ └── responsive.css # Mobile responsiveness
103+
└── v/ # Static assets (images, etc.)
104+
```
105+
106+
## 🚀 Setup Instructions
107+
108+
### Prerequisites
109+
- Node.js (v14 or higher)
110+
- npm or yarn
111+
- AstraDB account and database
112+
113+
### 1. Clone and Install
114+
```bash
115+
git clone <repository-url>
116+
cd openrockets.me
117+
npm install
118+
```
119+
120+
### 2. Environment Setup
121+
The `.env` file is already configured with AstraDB credentials:
122+
```env
123+
ASTRA_DB_ID=35eb48e5-0472-4568-9f3d-a452a1c8ab2c
124+
ASTRA_DB_KEYSPACE=default_keyspace
125+
ASTRA_DB_API_ENDPOINT=https://35eb48e5-0472-4568-9f3d-a452a1c8ab2c-eu-west-1.apps.astra.datastax.com
126+
ASTRA_DB_APPLICATION_TOKEN=AstraCS:lNoNTboZjvbvFGrJWTyJwZqp:8a244f6afa4acf88c1a43b4c9e25e6a56dc384caa5176b3141e93dc9375c5c4a
127+
```
128+
129+
### 3. Start the Server
130+
```bash
131+
# Development mode
132+
npm run dev
133+
134+
# Production mode
135+
npm start
136+
```
137+
138+
### 4. Access the Application
139+
- Open http://localhost:3000 in your browser
140+
- Create an account or sign in
141+
- Explore the features!
142+
143+
## 🔧 API Endpoints
144+
145+
### Authentication
146+
- `POST /api/auth/register` - User registration
147+
- `POST /api/auth/login` - User login
148+
- `GET /api/auth/profile` - Get user profile
149+
- `PUT /api/auth/profile` - Update user profile
150+
151+
### Posts & Community
152+
- `POST /api/posts` - Create new post
153+
- `GET /api/posts` - Get posts (with filtering)
154+
- `GET /api/posts/:id` - Get single post
155+
- `POST /api/posts/:id/like` - Like/unlike post
156+
- `POST /api/posts/:id/comments` - Add comment
157+
- `GET /api/posts/:id/comments` - Get comments
158+
159+
### Events & Calendar
160+
- `POST /api/events` - Create new event (instructors only)
161+
- `GET /api/events` - Get events (with filtering)
162+
- `POST /api/events/:id/join` - Join event
163+
164+
### Messaging
165+
- `POST /api/messages` - Send message
166+
- `GET /api/messages/:userId` - Get conversation
167+
168+
### Search & Discovery
169+
- `GET /api/search` - Search posts, events, and users
170+
171+
## 🎨 UI Features
172+
173+
### Design System
174+
- **Dark Mode** by default with Microsoft Teams inspiration
175+
- **Responsive Layout** that works on all devices
176+
- **Smooth Animations** and micro-interactions
177+
- **Consistent Typography** using Inter and Space Mono fonts
178+
- **Programming-focused** color scheme and iconography
179+
180+
### Interactive Elements
181+
- **Modal Dialogs** for forms and details
182+
- **Loading States** with spinners and skeletons
183+
- **Toast Notifications** for user feedback
184+
- **Dropdown Menus** for navigation
185+
- **Image Galleries** with lightbox functionality
186+
- **Real-time Updates** without page refresh
187+
188+
### Accessibility
189+
- **Keyboard Navigation** support
190+
- **ARIA Labels** for screen readers
191+
- **Focus Management** in modals
192+
- **Color Contrast** compliance
193+
- **Responsive Text** sizing
194+
195+
## 🔒 Security Features
196+
197+
- **JWT Authentication** with secure token storage
198+
- **Password Hashing** using bcryptjs
199+
- **Input Validation** on frontend and backend
200+
- **File Upload Security** with type checking
201+
- **CORS Configuration** for cross-origin requests
202+
- **SQL Injection Prevention** through parameterized queries
203+
204+
## 📱 Mobile Support
205+
206+
- **Responsive Grid** layouts
207+
- **Touch-friendly** interface elements
208+
- **Mobile-optimized** navigation
209+
- **Swipe Gestures** for image galleries
210+
- **Adaptive Typography** for small screens
211+
212+
## 🚀 Deployment
213+
214+
### Local Development
215+
```bash
216+
npm run dev
217+
```
218+
219+
### Production Build
220+
```bash
221+
npm start
222+
```
223+
224+
### Environment Variables
225+
Make sure to set these in production:
226+
- `PORT` - Server port (default: 3000)
227+
- `JWT_SECRET` - Secret key for JWT tokens
228+
- `ASTRA_DB_*` - AstraDB connection details
229+
230+
## 📖 Usage Guide
231+
232+
### For Students (Learners)
233+
1. **Register** with your email and create a profile
234+
2. **Browse Events** in the calendar to find interesting classes
235+
3. **Join Classes** by clicking the join button
236+
4. **Participate** in community discussions
237+
5. **Track Progress** on your dashboard
238+
239+
### For Students (Lecturers)
240+
1. **Register** as a "Student Lecturer"
241+
2. **Create Events** using the calendar interface
242+
3. **Manage Attendees** and event capacity
243+
4. **Share Knowledge** through community posts
244+
5. **Monitor Engagement** through analytics
245+
246+
### Community Interaction
247+
1. **Create Posts** with rich content and images
248+
2. **Comment and Like** to engage with content
249+
3. **Use Hashtags** to categorize content
250+
4. **Join Study Groups** for collaborative learning
251+
5. **Follow Trending Topics** to stay updated
252+
253+
## 🐛 Troubleshooting
254+
255+
### Common Issues
256+
257+
1. **Database Connection Error**
258+
- Verify AstraDB credentials in `.env`
259+
- Check network connectivity
260+
- Ensure keyspace exists
261+
262+
2. **Authentication Issues**
263+
- Clear browser localStorage
264+
- Check JWT token expiration
265+
- Verify user credentials
266+
267+
3. **File Upload Problems**
268+
- Check file size (max 5MB)
269+
- Verify file type (images only)
270+
- Ensure proper form encoding
271+
272+
### Development Tips
273+
274+
- Use browser DevTools for debugging
275+
- Check console for JavaScript errors
276+
- Monitor network requests in DevTools
277+
- Use Postman for API testing
278+
279+
## 🤝 Contributing
280+
281+
1. Fork the repository
282+
2. Create a feature branch
283+
3. Make your changes
284+
4. Test thoroughly
285+
5. Submit a pull request
286+
287+
## 📄 License
288+
289+
MIT License - see LICENSE file for details
290+
291+
## 🆘 Support
292+
293+
For issues and questions:
294+
- Create an issue on GitHub
295+
- Contact the development team
296+
- Check the documentation
297+
298+
---
299+
300+
**OpenRockets LMS** - Empowering the next generation of programmers through collaborative learning! 🚀
301+
6302
#### OpenRockets.me is the present official domain of the OpenRockets Open-Source Software Foundation, though this may be subject to change in the future.
7303
=======
8304
<a href="https://openrockets.me/v/2025"><img src="https://openrockets.me/v/gitstarts2025v.png"></a>

about.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
<meta charset="UTF-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1.0">
66
<title>About us | OpenRockets Software Foundation.</title>
7-
<meta name="description" content="Learn about OpenRockets Software Foundation - our mission, vision, and the team behind the open-source community.">
7+
<meta name="description" content="Learn about OpenRockets Software Foundation - a dynamic open-source programming community specializing in C++, JavaScript, Python, AI, and Machine Learning education. Discover our mission to empower the next generation of programmers through innovative education, collaborative projects, and comprehensive learning resources for developers worldwide.">
8+
<link rel="icon" type="image/png" href="i/assets/static/openthread_logo_bash-trans-removebg-preview (1).png">
89
<link rel="stylesheet" href="styles/main.css">
910
<link rel="stylesheet" href="styles/components.css">
1011
<link rel="stylesheet" href="styles/responsive.css">

0 commit comments

Comments
 (0)