Expense Reports is a full-stack web application designed to streamline the process of managing employee expense reports. The system enables employees to create and submit monthly expense reports while providing administrators with the tools to review, approve, or reject these submissions.
- Employee Dashboard: Allows employees to log and submit their monthly expense reports
- Admin Dashboard: Provides administrators with a comprehensive interface to review, filter, and manage expense reports
- Authentication System: Secure user authentication and authorization
- Multi-language Support: Supports both English and Arabic languages
- Theme Support: Light and dark theme options
- Status Tracking: Track the status of expense reports (pending, approved, rejected)
- Frontend: React + Vite with modern UI components
- Backend: FastAPI (Python) with RESTful API architecture
- Database: PostgreSQL (configured via database models)
- State Management: React Context API for authentication, theme, and language
A system that allows employees to log their monthly expense reports.
-
Python 3.8+: Used for the FastAPI backend.
-
Pipenv: A Python dependency and virtual environment manager.
-
Node.js & npm: Used for the React frontend.
Follow these steps to get both the backend and frontend servers running.
This part of the project is in the backend/ directory.
-
Navigate to the main project directory. If you are already there, skip this step.
cd expense-reports/ -
Navigate into the
backenddirectory.cd backend/ -
Install the required Python dependencies using Pipenv. This will create a virtual environment and install FastAPI and Uvicorn.
pipenv install -
Activate the venv:
pipenv shell -
Run the backend server. The
--reloadflag will automatically restart the server on code changes.uvicorn main:app --reload
The backend should now be running and accessible at http://localhost:8000.
This part of the project is in the frontend/ directory.
-
Open a new terminal session and navigate to the project's root.
cd expense-reports/ -
Navigate into the
frontenddirectory.cd frontend/ -
Install the required Node.js dependencies.
npm install -
Run the frontend development server.
npm run dev
The frontend should now be running and accessible at http://localhost:5173.