A web application for the University of Idaho to manage SEVP certification compliance. Tracks ~425 academic programs required for the Form I-17 recertification process submitted to ICE/DHS, enabling the university to enroll F-1 and M-1 nonimmigrant students and issue I-20 immigration documents.
Built from the UI-Insight TEMPLATE-app.
Raw institutional data is never committed to this repository. The application reads
data from a configurable local directory (DATA_DIR). All .xlsx, .csv, and .tsv
files are gitignored. Test fixtures use synthetic data only.
- Python 3.11+ (3.13 recommended)
- Node.js 22+ and npm
- Docker and Docker Compose (optional, for PostgreSQL)
# Start PostgreSQL (or use SQLite — see .env.example)
docker compose up -d postgres
cd backend
python3.13 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp ../.env.example ../.env
# Edit .env: set DATA_DIR to your local spreadsheet directory
uvicorn app.main:app --reload --port 8000cd frontend
npm install
npm run devOpen http://localhost:5173. The dashboard proxies API requests to the backend.
cd backend
source .venv/bin/activate
python -m app.services.import_programs "Recertification Program List 2026.xlsx"The filename is relative to DATA_DIR (set in .env). Use --dry-run to preview without importing.
# Backend (12 tests)
cd backend && source .venv/bin/activate && pytest -v --tb=short
# Frontend
cd frontend && npm run build && npm test# Backend
cd backend && source .venv/bin/activate && ruff check . && ruff format --check .
# Frontend
cd frontend && npx eslint .├── backend/ # FastAPI application
│ ├── app/
│ │ ├── api/v1/ # Route handlers (programs CRUD)
│ │ ├── models/ # SQLAlchemy ORM models (Program)
│ │ ├── schemas/ # Pydantic schemas
│ │ ├── services/ # Business logic (import_programs)
│ │ └── config.py # Settings (DATA_DIR, DATABASE_URL, etc.)
│ ├── migrations/ # Alembic
│ └── tests/ # pytest (12 tests)
├── frontend/ # React + TypeScript + Tailwind
│ └── src/
│ ├── api/ # API client (programs)
│ ├── components/ # ProgramTable, ProgramFilters, Pagination
│ ├── pages/ # ProgramsPage, ProgramDetailPage
│ └── types/ # TypeScript interfaces
├── docs/
│ └── ROADMAP.md # Project roadmap and module plan
├── CLAUDE.md # AI agent guidance (includes data security policy)
└── docker-compose.yml
See docs/ROADMAP.md for the full module roadmap.
See CONTRIBUTING.md. All contributors must follow the Code of Conduct.
- Built on patterns from OpenERA by the University of Idaho
- Part of the UI-Insight initiative