We are seeking a talented Software Engineer / Web Developer to build a cross-platform, modular application.
This task evaluates your ability to:
- Design scalable software architecture
- Reuse code across desktop and web platforms
- Implement plugins
- Build, test, and deploy with proper development workflows
Develop the Prism Viewer as:
- Desktop Application → Python (PySide2)
- Web Application → Django (backend) + React (frontend)
- Shared Core → Contains business logic (calculations, DB access)
- Plugin System → Install new shapes at runtime
- 3D Visualization → Both desktop and web
- CI/CD Setup with automated unit testing
UI Flow:
- Home Screen → Buttons: Rectangular Prism & Install a Plugin
- After Installing a Plugin → New shape (e.g., Cylinder) appears
- Module Screen → Select section → Show volume/surface area → Display 3D Model
Follow MVC pattern with suggested folder structure:
/src/ ├── core/ # Shared logic ├── desktop/ # PySide2 app ├── web/ # Django + React
- UI → PySide2
- Database → SQLite (store prism data)
- 3D Model → Render using pythonOCC
- Plugin Support
- Install from separate GitHub repos (e.g., Cylinder module)
- Installed at runtime (no rebuild required)
- Each plugin: Own UI + CAD generator
- Installer
- Built via PyInstaller or similar
- Fetches latest master branch of main app + plugins
- Must not bundle web app files
- Database → MySQL or PostgreSQL
- Endpoints:
/prisms/→ List of prism designations/prisms/<id>/→ Dimensions/prisms/<id>/compute/→ Surface area + volume/prisms/<id>/cad/→ CAD model data (via FreeCAD)
- Components:
- Dropdown to select prism
- Display surface area & volume
- Button to fetch & show 3D model
- 3D Rendering → Three.js (or similar)
- Default module → Rectangular Prism
- New modules (e.g., Cylinder):
- Live in separate GitHub repo
- Loaded at runtime
- Own UI + CAD generator logic
- Integrate without code duplication
- Installable via script/installer
Run commands:
pytest # Python tests
npm test # React tests