A desktop application for educators to manage an SAT question bank, generate dynamic worksheets with randomized questions, LaTeX equation rendering, and capture detailed scoring analytics.
- Question Management: Create, read, update, and delete SAT questions with optional images
- Worksheet Generation: Generate PDF worksheets with randomized question order and answer choices
- LaTeX Equation Rendering: Support for LaTeX equations in questions and answers
- Analytics: Track student performance and generate reports
- Bulk Import/Export: Import and export questions in JSON format
Objective:
Develop a high-performance, desktop-based Windows application that lets educators manage a SQL-backed SAT question bank, generate dynamic worksheets (with randomized question and answer order, inline images, and LaTeX-rendered equations), and capture detailed scoring analytics for individual students.
The easiest way to install SAT App is from Anaconda Cloud:
# Create and activate a new environment
conda create -n sat_app_env python=3.13
conda activate sat_app_env
conda install -c henrichung sat_app
# Launch the application
sat_appIf you received the .conda package file directly:
# Create and activate a new environment
conda create -n sat_app_env python=3.13
conda activate sat_app_env
conda install --use-local /path/to/sat_app-0.1.0-py313.conda
# Launch the application
sat_app-
Clone the repository:
git clone https://github.com/henrichung/sat_app.git cd sat_app -
Build the conda package:
# Navigate to conda recipe directory cd conda-recipe # Build the package conda build . # For Python 3.13 specifically conda build --python=3.13 .
-
Install the built package:
# The build process will show the exact path conda install -c local sat_app # Or specify the path directly conda install /path/to/conda-bld/linux-64/sat_app-0.1.0-py313.conda
-
Launch the application:
sat_app
-
Clone the repository:
git clone https://github.com/henrichung/sat_app.git cd sat_app -
Create and activate a conda environment:
conda env create -f environment.yml conda activate sat_app
-
Install in development mode:
pip install -e . -
Run the application:
# Run directly python sat_app/main.py # Or using the entry point sat_app
- Activate environment:
mamba activate sat_app_env - Run app:
python main.py - Run tests:
pytest tests/ - Run single test:
pytest tests/path_to_test.py::TestClass::test_function -v - Lint code:
flake8 sat_app/ - Type check:
mypy sat_app/
The application has been standardized on PyQt6 for its GUI components.
To build the application executable:
tools/simple_build.bat # Windows
tools/simple_build.sh # Linux/macOStools/build_conda_package.bat # Windows
tools/build_conda_package.sh # Linux/macOS- Python version: 3.9+
- UI Framework: PyQt6
- Database: SQLite
- Naming: Snake_case for functions/variables, PascalCase for classes
- Type hints: Required for all function parameters and return values
- Documentation: Docstrings for all classes and non-trivial functions
- Line length: Max 100 characters
The application follows a modular architecture with clear separation between UI, business logic, data access, and rendering components:
config/: Configuration managementdal/: Data Access Layer (database operations)business/: Business logic (question management, worksheet generation)rendering/: PDF generation and LaTeX renderingui/: User interface componentsutils/: Utility functionstests/: Test suite for all components
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.