A simplified VISA Dossier management system using Laravel (API-only) for the backend and React Router for the frontend.
backend/: Laravel API for file managementfrontend/: React application for the user interface
- Upload files (PDF, PNG, JPG) up to 4MB
- List uploaded files grouped by type (Passport, Utility Bill, Other)
- Delete files
- Preview uploaded files
- Responsive UI with visual feedback
- PHP 8.1 or higher
- Composer
- SQLite (for development)
- Navigate to the backend directory:
cd backend- Install dependencies:
composer install- Create environment file:
cp .env.example .env- Generate application key:
php artisan key:generate- Create SQLite database:
touch database/database.sqlite- Run migrations:
php artisan migrate- Create storage link:
php artisan storage:linkStart the Laravel development server:
php artisan serveThe API will be available at http://localhost:8000.
GET /api/dossier-files: List all files grouped by typePOST /api/dossier-files: Upload a new fileDELETE /api/dossier-files/{id}: Delete a file
- Node.js 16 or higher
- npm
- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Create environment file:
mkdir .env- Add Api base url
VITE_BASE_URL= "http://127.0.0.1:8000/api"
Start the React development server:
npm run devThe application will be available at http://localhost:5173/.
The backend includes comprehensive tests:
- Unit tests for models and services
- Feature tests for API endpoints
- Integration tests for complete workflows
Run the tests:
cd backend
php artisan test