A full-stack web application for educational document sharing and collaboration, built with FastAPI (Python), React (JavaScript), and Redis.
- User Authentication - JWT-based secure login/registration
- Document Management - Upload, organize, and share files
- Channel System - Topic-based content organization
- Social Features - Comments, reactions, and saved posts
- Gamification - Points system and leaderboards
- Content Moderation - Automated flagging and manual review
- Search Functionality - Find documents and channels
Install the following software:
| Tool | Version | Download |
|---|---|---|
| Docker Desktop | Latest | docker.com |
| Python | 3.11+ | python.org |
| Node.js | 18+ | nodejs.org |
- Extract and setup:
unzip edora-source.zip
cd edora- Run the application:
docker-compose up --build -d- Access the application:
- Frontend: http://localhost:5173
- API Documentation: http://localhost:8000/docs
- Stop the application:
docker-compose downFor testing purposes, the application comes with pre-configured users and educational content:
- Email:
moderator@example.com - Password:
moderator - Role: Administrator (full access to all features)
- Email:
user@edora.com - Password:
user123 - Role: Regular user (standard features)
- Professor:
professor@university.edu/prof123 - Student:
student@university.edu/student123 - Researcher:
researcher@institute.org/research123
The application includes 6 educational channels with relevant content:
- Computer Science - Programming, algorithms, software engineering
- Mathematics - Calculus, linear algebra, statistics
- Physics - Classical mechanics, electromagnetism, quantum physics
- Biology - Cell biology, genetics, ecology
- Chemistry - Organic chemistry, atomic structure, thermodynamics
- Study Tips & Resources - Academic success strategies
Each channel contains 3 detailed educational posts written by different users, demonstrating the collaborative nature of the platform.
You can also register new users directly through the application:
- Go to http://localhost:5173
- Click "Register"
- Fill in the registration form
- Start using the application immediately
This section provides step-by-step instructions to test all major features of the application.
- Registration: Create a new account at http://localhost:5173
- Login: Use any of the default accounts listed above
- Profile: View user profile and points in the dashboard
- Logout: Use the logout button in the navigation
- View Channels: Browse the 6 pre-loaded educational channels
- Create Channel: Click "+" button, fill in name and description
- Join Channels: Click "Join" on any channel to participate
- Channel Posts: View posts within each channel
- Create Post:
- Click "Upload" in navigation
- Fill in title, content, select channel
- Optionally attach files (PDF, images, documents)
- Submit to create post
- View Posts: Click on any post to see full details
- Edit Posts: Authors can edit their own posts
- Delete Posts: Authors and moderators can delete posts
- Comments:
- Open any post detail view
- Add comments at the bottom
- View threaded discussions
- Reactions:
- Like/dislike posts using thumb icons
- See reaction counts update in real-time
- Save Posts:
- Use bookmark icon to save interesting posts
- Access saved posts from your profile
- Earn Points:
- Create posts (+10 points)
- Write comments (+5 points)
- Receive likes (+1 point each)
- Leaderboard: View top users by points in dashboard
- Point History: Check your point transactions in profile
- Search Posts: Use search bar to find posts by title/content
- Browse Channels: Explore different subject areas
- Filter Content: Navigate by channel categories
- Login as Moderator: Use
moderator@example.com/moderator - View Flagged Content: Access moderator panel dashboard
- Approve/Reject: Moderate flagged content
- Delete Posts: Remove inappropriate content
- Upload Files:
- Attach files when creating posts
- Supported formats: PDF, images, documents
- Max file size: 10MB per file
- View Files: Click on attached files to download
- File Organization: Files are organized by post
- Regular User (
user@edora.com):- Create posts and comments
- Join channels and interact
- Limited to own content management
- Moderator (
moderator@example.com):- All regular user features
- Delete any posts/comments
- Access moderation dashboard
- Approve flagged content
- Statistics: View your posts, comments, and points
- Recent Activity: See latest posts and interactions
- Leaderboard: Compare points with other users
- Quick Actions: Fast access to create content
- Content Flagging: Create posts with inappropriate content to test auto-flagging
- Concurrent Users: Test with multiple browser tabs/users
- File Handling: Upload various file types and sizes
- Search Accuracy: Test search with different keywords
- Responsive Design: Test on different screen sizes
- Large Files: Upload files close to 10MB limit
- Many Posts: Create multiple posts in quick succession
- Heavy Interaction: Like/comment on many posts rapidly
- Search Load: Perform multiple searches simultaneously
edora/
├── app/ # FastAPI backend
│ ├── api/ # API routes and endpoints
│ ├── models/ # Database models
│ ├── core/ # Core utilities and auth
│ └── main.py # Application entry point
├── frontend/ # React frontend
│ ├── src/ # React source code
│ ├── package.json # Dependencies
│ └── vite.config.js # Build configuration
├── data/ # SQLite database storage
├── uploads/ # File uploads storage
├── docker-compose.yml # Docker services configuration
├── requirements.txt # Python dependencies
Backend:
- FastAPI (Python) - REST API framework
- SQLModel - Database ORM
- SQLite - Database
- Redis - Caching
- JWT - Authentication
Frontend:
- React - UI framework
- Vite - Build tool
- CSS - Styling
- JavaScript (ES6+)
- Register a new user at http://localhost:5173
- Create channels for organizing content
- Upload documents (PDF, images, etc.)
- Test social features - comments, reactions, saves
- Explore gamification - points and leaderboard
- Try search functionality for documents and channels
Key endpoints available at http://localhost:8000/docs:
POST /auth/register- User registrationPOST /auth/login- User loginGET /channels/- List channelsPOST /channels/- Create channelGET /posts/- List postsPOST /posts/- Create postPOST /api/files/upload- Upload files
If containers fail to start:
docker-compose down
docker-compose build --no-cache
docker-compose up -dCheck logs if needed:
docker-compose logs api
docker-compose logs frontend