Week #6 #
Links #
Final deliverables #
Project overview #
Open Labs Share is an innovative educational platform that combines structured learning with academic collaboration, addressing the fragmented nature of educational resources and lack of constructive feedback mechanisms for students and researchers. Our platform bridges the gap between practical learning and academic discourse by creating a dual-environment system that facilitates both guided learning through practical assignments (labs) and open academic collaboration through research publication (articles) and peer review. Also, it supports Marimo, a reactive Python notebook environment for interactive computational education, which allows users to write and execute code in a notebook-like interface to create more interactive and engaging learning experiences. Chat assistant, powered by RAG-based intelligent chat system using FAISS vector storage and BGE embeddings, context-aware responses with memory persistence, and educational content integration, can be accessed by users to get answers to their questions without leaving the platform. The platform is designed to be scalable and modular, allowing for easy integration of new features and services.
The platform solves critical problems in modern education: students struggling to get meaningful feedback on their work early in their careers, early-stage researchers lacking accessible platforms to share knowledge with learners, and the disconnect between theoretical learning and practical application. Our solution provides structured learning paths with practical assignments, comprehensive feedback systems, and tools for educators to guide students effectively.
Features #
Implemented Core Features:
- Authentication & User Management: Complete JWT-based authentication service with secure session management across all microservices, user registration, and comprehensive profile management.
- Labs Management System: Full lab creation, browsing, and submission workflow with file upload capabilities, lab resource management via MinIO storage, and submission tracking with cost-based game-like point system.
- Search & Discovery: Advanced search functionality with tag-based filtering, comprehensive and flexible tagging system for content categorization, and efficient content discovery mechanisms.
- Feedback & Review System: Complete comment system for detailed discussions, submission feedback workflows, and reviewer assignment logic with notification systems.
- User Interface & Experience: Dark/light theme switching with persistent preferences, intuitive navigation with sidebar and header components, search integration across platform, and consistent design system with reusable components.
- File Storage & Management: Robust file upload system with MinIO integration, concurrent upload handling, file versioning support, and metadata storage with validation.
Advanced Features:
- ML-Powered Chat Assistant: RAG-based intelligent chat system using FAISS vector storage and BGE embeddings, context-aware responses with memory persistence, and educational content integration
- Code Auto-Grading Pipeline: Automated code evaluation system using fine-tuned Qwen2.5-Coder model, Redis queue-based job processing, and comprehensive assessment rubrics
- Marimo Integration: Reactive Python notebook environment for interactive computational education, component independence with session isolation, and stateless architecture for scalability
Tech stack #
Frontend
- UI & Framework: React, Vite, Tailwind CSS, PostCSS
- Routing: React Router DOM
Backend Microservices
Java (Spring Boot) Services:
- API Gateway:
- Language: Java, Spring Boot
- Communication: REST (for external API), gRPC (for internal communication)
- Tools: SpringDoc OpenAPI, Lombok, Gradle
- Auth Service:
- Language: Java, Spring Boot, Spring Security
- Storage: PostgreSQL (via Spring Data JPA)
- Security: JWT
- Communication: gRPC (for internal communication)
- Users Service:
- Language: Java, Spring Boot, Spring Security
- Storage: PostgreSQL (via Spring Data JPA)
- Communication: gRPC (for internal communication)
- Marimo Manager Service:
- Language: Java, Spring Boot
- Storage: PostgreSQL, MinIO
- Communication: gRPC
- API Gateway:
Python Services:
- Labs Service:
- Language: Python 3.12
- Storage: PostgreSQL (via SQLAlchemy), MongoDB, MinIO
- Communication: gRPC (for internal communication)
- Articles Service:
- Language: Python 3.12
- Storage: PostgreSQL (via SQLAlchemy), MinIO
- Communication: gRPC (for internal communication)
- ML Service:
- Language: Python, FastAPI
- AI/ML: Langchain, Langgraph, Huggingface, Groq
- Storage: Qdrant (vector), PostgreSQL
- Async: Celery (message broker)
- Marimo Executor Service:
- Language: Python
- Communication: gRPC
- Labs Service:
Go Service:
- Feedback Service:
- Language: Go
- Storage: PostgreSQL, MongoDB, MinIO
- Communication: gRPC (for internal communication)
- Feedback Service:
Databases & Global Storage
- Relational: PostgreSQL
- Document: MongoDB
- Vector: Qdrant
- Object Storage: MinIO
- Message Broker: Celery
- In-Memory Cache: Redis
Infrastructure & DevOps
- Containerization: Docker, Docker Compose, Docker Bake
- CI/CD: GitHub Actions & GitHub Container Registry
- Deployment: Self-hosted runner, Blue/Green Strategy
- Networking: NGINX, HAProxy, CloudPub (ngrok alternative)
Setup instructions #
Prerequisites:
- Docker and Docker Compose installed
- Git for repository cloning
- Hardware (used for build from zero):
- Minimal Hardware: ~40GB of disk space
- Recommended hardware: 8 CPU, 16GB RAM, 40GB of disk space
Quick Start (Recommended):
Clone the Repository:
git clone https://github.com/IU-Capstone-Project-2025/open-labs-share cd open-labs-share
Environment Configuration:
cp .env.example .env # Configure environment variables for your setup
Launch Frontend+Backend services with Docker Compose:
docker-compose --profile test up -d --build
Launch ML service with Docker Compose:
docker-compose --profile ml up -d --build
Important note: these steps may change, since there is 2 days left before meeting with TA at moment of writing this. Actual steps will be updated in the repository README.md
:
link
Presentation draft #
Can be found in the presentation draft
Weekly commitments #
Individual contribution of each participant #
- Kirill Efimovich (PM / DevOps):
Kanban board (clickable):
link
Milestone (clickable):
link
Closed issues (clickable):
Issue,
Issue,
Issue,
Issue
Closed PR’s (clickable):
PR,
PR,
PR
Summary of TA feedback: Great impact during previous week, frontend connection needed, also futher work with new features is needed. ML service is not connected as expected and need optimizations.
Weekly contribution: Revised and optimized CI pipelines, stabilized containerization and Green-Blue deployment process, improved documentation, actively participated in the code review process, coordinated team sprint planning based on feedback analysis, wrote comprehensive Week 5 report with detailed technical analysis.
- Mikhail Trifonov (Backend):
Closed issues (clickable):
Issue,
Issue,
Issue
Closed PR’s (clickable):
PR,
PR
Weekly contribution: Completed full backend and frontend implementation for Marimo service and developed comprehensive frontend integration for Marimo notebooks.
- Nikita Maksimenko (Backend):
Closed issues (clickable):
Issue,
Issue
Closed PR’s (clickable):
PR
Weekly contribution: Performed code quality review and security audit for API Gateway, enhanced documentation including deployment guides and environment variable specifications, updated service architecture documentation, and established presentation structure with implementation concepts and design elements.
- Timur Salakhov (Backend):
Closed issues (clickable):
Issue,
Issue
Closed PR’s (clickable):
PR
Weekly contribution: Developed comprehensive testing for Articles Service functionality and documented the technical stack for both Articles and Labs Services, ensuring proper integration with the overall system architecture.
- Ravil Kazeev (Backend):
Closed issues (clickable):
Issue,
Issue,
Issue
Closed PR’s (clickable):
PR
Weekly contribution: Fixed file upload functionality on both frontend and backend, implemented certificate integration for secure downloads, and made critical fixes to the feedback and labs services to ensure proper file handling and download capabilities.
- Kirill Shumskiy (ML):
Closed issues (clickable):
Issue,
Issue,
Issue,
Issue
Weekly contribution: Migrated vector database from FAISS to Qdrant for improved performance, fixed Docker container configurations for ML services, implemented frontend integration for the chat assistant, and performed code refactoring and polishing to enhance overall system stability and maintainability.
- Aleliya Turushkina (Designer / Frontend):
Figma board (clickable):
link
Closed issues (clickable):
Issue,
Issue,
Issue,
Issue,
Issue,
Issue,
Issue
Closed PR’s (clickable):
PR,
PR,
PR,
PR,
PR,
PR,
PR,
PR
Weekly contribution: Implemented file download functionality for submissions and feedback, added Marp and LaTeX support on frontend, enhanced image display from assets and URLs, improved error handling for lab/article creation, developed responsive design for registration pages, updated dark theme support, improved frontend documentation, fixed display issues for titles and dates, and added deletion functionality for labs, articles, and submissions.
More detailed descriptions of services and technical implementations can be found in the project repository link.
Plan for Next Week #
Week #7: Final Presentation & Project Showcase #
Tasks:
- Presentation preparation: Finalize the presentation slides and demo environment.
- Final Rehearsal: One last run-through of the presentation and demo.
- Technical Check: Ensured that the demo environment and any required software are working perfectly.
- Deliver Final Presentation:
- Present our project clearly and confidently.
- Conduct a smooth live demo of the key functionalities.
- Be prepared for a Q&A session.
Confirmation of the code’s operability #
We confirm that the code in the main branch:
- In working condition.
- Run via docker-compose (or another alternative described in the
README.md
).