-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the ExpoScholar documentation wiki. This wiki provides comprehensive documentation for the ExpoScholar educational exhibition management platform.
- Installation - Get started with ExpoScholar
- Architecture - System architecture and design
- Development - Development workflows and practices
- Deployment - Production deployment guides
- Infrastructure - Infrastructure and operations
- API Reference - REST API documentation
- Troubleshooting - Common issues and solutions
- Contributing - How to contribute to ExpoScholar
ExpoScholar is an educational exhibition management platform that demonstrates integrated web and mobile application development using modern software engineering practices. The system consists of a Django-based server application and a Flutter-based mobile client, designed to work together in offline-capable workflows with automatic synchronization.
Current Version: v0.9.3-beta+3
License: GNU GPLv3+
Status: Active development
ExpoScholar consists of three primary components:
- Server Application - Django 5.2-based REST API and administrative interface
- Mobile Application - Flutter-based cross-platform client for Android and iOS
- Infrastructure - Deployment configurations for Docker, Kubernetes, and cloud environments
Server:
- RESTful API for mobile client synchronization
- HTML5-only administrative interface (no JavaScript dependencies)
- User authentication and authorization
- Subscription management and billing
- Booth and item management
- Order processing
- Audit logging
- Payment processing integration (Stripe, PayPal)
Mobile:
- Offline-first data storage using SQLite
- Automatic background synchronization
- Camera-based media capture
- Booth and item management
- Order creation and management
- Configurable server endpoints
- Diagnostic and debugging tools
Infrastructure:
- Docker containerization for server and mobile components
- Kubernetes deployment manifests
- Monitoring stack (Prometheus, Alertmanager, Grafana)
- Automated backup and restore procedures
- Security hardening configurations
- Autoscaling policies
- Terraform infrastructure as code
- Operating System: GNU/Linux or macOS (Windows via WSL)
- Python: 3.11 or later
- Flutter SDK: 3.38.3 or later
- Java: 17 (for Android builds)
- Android SDK: 36
- Android NDK: 27.0.12077973
- Git and GNU Make
The fastest way to get started:
git clone git@github.com:mkhellat/exposcholar.git
cd exposcholar
./setup installThis will:
- Validate system requirements
- Install Python dependencies
- Set up Flutter dependencies
- Configure development environment
./setup check./setup start-server # Start Django server at http://localhost:8000
./setup start-mobile # Start Flutter appThe project includes comprehensive Texinfo documentation that can be built into multiple formats:
-
Info format: View with
info exposcholarafter building - HTML format: Single-file HTML manual
- PDF format: Printable PDF manual
Build documentation with:
./setup docs # Build Info and HTML
./setup docs-pdf # Build PDF (requires TeX)-
Server: See
server/README.md -
Mobile: See
mobile/README.md -
Infrastructure: See
infrastructure/README.md
-
Install dependencies:
./setup install -
Start services:
./setup start-serverand./setup start-mobile -
Access web UI:
http://localhost:8000 -
Run tests:
./setup test -
Build artifacts:
./setup build-apkor./setup build-aab
./setup test-server
# or
cd server && python manage.py test./setup test-mobile
# or
cd mobile && flutter testcd server && python manage.py test --coverage
cd mobile && flutter test --coverage./setup build-apk [--release] [--obfuscate]./setup build-aab [--release] [--obfuscate]./setup build-ios [--release] [--obfuscate]exposcholar/
├── server/ # Django apps, config, requirements, templates
├── mobile/ # Flutter sources, platform folders, tests
├── infrastructure/ # Docker, Kubernetes, monitoring, Terraform, etc.
├── scripts/ # Setup, debug, deployment, utility scripts
├── tests/ # Server, mobile, and integration suites
├── docs/ # Documentation (Texinfo source and generated files)
├── Makefile # Root orchestration targets
└── setup # Guided CLI for installs and operations
- Docker: Containerization for server and mobile components
- Kubernetes: Deployment manifests for production clusters
- Monitoring: Prometheus, Alertmanager, and Grafana stack
- Backup: Automated backup and restore procedures
- Security: Network policies, RBAC, Pod Security Standards
- Autoscaling: Horizontal and vertical pod autoscaling
- Terraform: Infrastructure as code for cloud environments
Installation Problems:
- Run
./setup checkto validate prerequisites - Ensure Python 3.11+ and Flutter 3.38.3+ are installed
- Verify Android SDK and NDK versions match requirements
Development Issues:
- Server won't start: Check migrations with
python manage.py migrate - Mobile build fails: Run
flutter cleanandflutter pub get - Synchronization not working: Verify server endpoint configuration
Deployment Issues:
- Check Docker/Kubernetes logs
- Verify environment variables
- Review security settings
For detailed troubleshooting, see the Troubleshooting page.
We welcome contributions! Please see the Contributing page for guidelines on:
- Code style and standards
- Commit message format
- Testing requirements
- Pull request process
-
Documentation: See
docs/directory for comprehensive Texinfo manual - Issues: File issues via the repository issue tracker
-
License: See
LICENSEfile for complete GPLv3 terms -
Contributors: See
AUTHORSfile
ExpoScholar exists to provide a transparent, high-quality learning artifact for students and researchers studying integrated web/mobile systems. Every script, manifest, and configuration is written with the intent to explain professional workflows.
- Django Documentation: https://docs.djangoproject.com/
- Flutter Documentation: https://flutter.dev/docs
- Docker Documentation: https://docs.docker.com/
- Kubernetes Documentation: https://kubernetes.io/docs/
- GNU Documentation Standards: https://www.gnu.org/prep/standards/
Last Updated: 2025-11-25
ExpoScholar Version: v0.9.3-beta+3