A comprehensive web application for UCF Global that manages various administrative forms and requests for international students. Built with React, CoreUI, and FastAPI.
CoreUI-demo-UCF/
├── frontend/ # React + CoreUI application
│ ├── src/
│ │ ├── views/forms/ # Form components
│ │ ├── _nav.js # Navigation config
│ │ └── routes.js # Route definitions
│ ├── .env.example # Environment variables template
│ └── vite.config.mjs # Vite configuration (port 3000)
├── backend/ # FastAPI server
│ ├── app/
│ │ ├── models.py # Database models
│ │ ├── schemas.py # Pydantic schemas
│ │ └── routes.py # API endpoints
│ ├── uploads/ # File upload storage
│ └── sql_app.db # SQLite database
└── README.md # This file
- React 19 - UI framework
- CoreUI React - Component library
- Vite - Build tool (configured for port 3000)
- React Router - Navigation
- FastAPI - Python web framework
- SQLAlchemy - Database ORM
- SQLite - Database
- Pydantic - Data validation
- Uvicorn - ASGI server
- Node.js (v16 or higher)
- Python (v3.8 or higher)
- npm or yarn
- pip (Python package manager)
-
Clone the repository:
git clone <repository-url> cd CoreUI-demo-UCF
-
Setup Backend:
cd backend python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt python update_tables.py # Create database tables cd ..
-
Setup Frontend:
cd frontend npm install cp .env.example .env # Optional: Add test data placeholders cd ..
cd backend
source venv/bin/activate # On Windows: venv\Scripts\activate
python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000Backend API: http://localhost:8000
API Docs: http://localhost:8000/docs
cd frontend
npm startFrontend App: http://localhost:3000
Student Services:
- I-20 Request Form - New I-20, program changes, travel signatures, dependent actions
- Academic Training Form - J-1 academic training authorization with file uploads (up to 20MB)
- Administrative Record Change - Request record changes
- Document Request - Official documents and transcripts
- Exit Form - Exit procedures and clearance
- Conversation Partner - Language practice program registration
Additional Services: 7. Florida Statute 101035 - Immigration documentation 8. Leave Request - Sick leave, vacation, administrative leave 9. Linkages Application - New application or renewal 10. Off-Campus Housing - Housing application 11. OPT/STEM Extension Reporting - Employment reporting
- View all submissions across all form types
- Filter by form type (I-20, Academic Training, etc.)
- Individual delete - Remove single requests
- Multi-select delete - Delete multiple requests at once
- Bulk delete - Clear all requests
- Detailed view modal - See complete submission data
- File tracking - View uploaded file paths
- Production-ready multipart/form-data implementation
- Handles files up to 20MB+
- Files stored in organized directories
- Automatic cleanup when requests are deleted
- File paths stored in database for reference
For testing, you can pre-fill forms with placeholder data:
cd frontend
cp .env.example .env
# Edit .env with your test valuesSee frontend/ENV_SETUP.md for detailed documentation.
.env file is gitignored and should NEVER be committed to version control.
POST /api/i20-requests/- Create requestGET /api/i20-requests/- List all requestsGET /api/i20-requests/{id}- Get specific requestDELETE /api/i20-requests/{id}- Delete specific requestDELETE /api/i20-requests/- Delete all requests
POST /api/academic-training/- Create request (multipart/form-data)GET /api/academic-training/- List all requestsGET /api/academic-training/{id}- Get specific requestDELETE /api/academic-training/{id}- Delete specific request (includes files)DELETE /api/academic-training/- Delete all requests (includes files)
POST /api/debug/- Debug endpoint for testing connectivity
The application uses SQLite for data storage:
- Location:
backend/sql_app.db - Tables:
i20_requests,academic_training_requests - Form data stored as JSON for flexibility
To reset the database:
cd backend
rm sql_app.db
python update_tables.py- All file uploads are stored outside the web root
.envfiles are gitignored- CORS is configured for development (update for production)
- Input validation on both frontend and backend
- File uploads use unique UUID filenames
- Frontend runs on port 3000 (configured in
vite.config.mjs) - Backend runs on port 8000
- Hot reload enabled for both frontend and backend
- Detailed console logging for debugging
For production:
- Remove or empty
.envfile - Update CORS settings in
backend/main.py - Use a production database (PostgreSQL recommended)
- Configure file storage (S3, GCS, or similar)
- Set up proper authentication/authorization
- Enable HTTPS
- Configure file size limits in FastAPI
- Check if backend is running on port 8000
- Verify CORS is properly configured
- Check browser console for errors
- Check backend logs for detailed errors
- Verify API endpoint URLs are correct
- Check network tab in browser dev tools
- Verify
uploads/directory exists - Check file size (must be under 20MB by default)
- Ensure backend has write permissions
This project is licensed under the MIT License - see the LICENSE file for details.