Multinex is a multi-channel learning platform. It allows you to create engaging exercises with <type></type>, <listen></listen>, <mermaid></mermaid>, <write></write> tags.
Uses different ways to learn - typing, seeing pictures, handwriting, and listening - to help you remember information better and understand it more deeply.
- Type: Students type important concepts to help them remember better and stay focused.
- Mermaid: Visual diagrams and flowcharts help students understand relationships between ideas using both words and pictures.
- Write: Fill-in-the-blank exercises help students recall information, with hints available for beginners.
- Listen: Audio lessons with questions keep students engaged and help them learn through hearing.
- Frontend: React 18, TypeScript, Tailwind CSS, Radix UI
- Backend: Node.js, Express, Wasp framework
- Database: PostgreSQL
- Document Processing: FastAPI, Apache Tika
- AI Services: OpenAI, Google Generative AI, Deepseek chat
- Storage: AWS S3
- Authentication: Email, Google OAuth
- Payments: Stripe
Multinex consists of two main components:
- Main Application (/app): Handles user interface, authentication, and core functionality
- Document Processing Service (/doc_flow): Processes uploaded documents, extracts topics.
- Operating System: Unix-based system (Linux, macOS) - Windows is not currently supported
- Node.js: v18 or higher
- PostgreSQL: v12 or higher
- Python: v3.9 or higher
- Docker: For running Apache Tika and development databases
curl -sSL https://get.wasp-lang.dev/installer.sh | sh -s -- --version 0.15.2git clone https://github.com/bmuzuraimov/Multinex
cd MultinexMake sure Docker is running on your system, then start PostgreSQL and run migrations:
cd app
wasp db start
wasp db migrate-devdocker pull apache/tika:latest
docker run -d -p 127.0.0.1:9998:9998 apache/tika:latestThe document processing service is a separate FastAPI application that handles document parsing. It is not included in the Wasp app and needs to be started separately.
cd doc_flow
python3.9 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8000 --reloadCreate two environment files:
-
.env.server: Server-side environment variables# Database (comment for local development with the Wasp dev database) # DATABASE_URL=postgres://user:password@localhost:5432/multinex # Auth GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret JWT_SECRET=your_jwt_secret SKIP_EMAIL_VERIFICATION_IN_DEV=true # Email MAILGUN_API_KEY=your_mailgun_api_key MAILGUN_DOMAIN=your_mailgun_domain # Payments STRIPE_KEY=your_stripe_secret_key BASIC_PRICE_ID=stripe_price_id_for_basic PRO_PRICE_ID=stripe_price_id_for_pro PREMIUM_PRICE_ID=stripe_price_id_for_premium STRIPE_WEBHOOK_SECRET=your_stripe_webhook_secret # Admin ADMIN_EMAILS=admin1@example.com,admin2@example.com # AI OPENAI_API_KEY=your_openai_api_key # Demo DEMO_EXERCISE_ID=example_exercise_id -
.env.client: Client-side environment variablesREACT_APP_STRIPE_CUSTOMER_PORTAL=https://your-stripe-customer-portal-url REACT_APP_DOCUMENT_PARSER_URL=http://localhost:8000
wasp startThe app will be available at http://localhost:3000
Multinex/
βββ app/ # Main Wasp application
β βββ main.wasp # Wasp configuration file
β βββ schema.prisma # Database schema
β βββ src/ # Source code
β β βββ client/ # Frontend React code
β β β βββ App.tsx # Root component
β β β βββ auth/ # Authentication components
β β β βββ common/ # Shared components
β β β βββ user/ # User-related components
β β βββ server/ # Backend Node.js code
β β βββ actions/ # Server actions
β β βββ auth/ # Auth configuration
β β βββ queries/ # Server queries
β βββ public/ # Static assets
β
βββ doc_flow/ # Document processing service
βββ api/ # API endpoints
βββ core/ # Core functionality
βββ services/ # Business logic
βββ main.py # Entry point
βββ requirements.txt # Python dependencies
Contributions are welcome! Please check out our CONTRIBUTING.md guide for details on how to contribute to this project and our CODE_OF_CONDUCT.md for community guidelines.
- Fork the repository
- Create a feature branch
- Make changes
- Run tests
- Submit a pull request
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
For support, please create an issue or contact bmuzuraimov@gmail.com.