Note: This project is still under development and should not be considered stable.
The Job Application Tracker started as a simple tool to track job applications, facilitating easy data entry with minimal constraints. The goal was to create a system that allows users to focus on their job hunt without being bogged down by the tracking process.
Initially, the project aimed to include domain-specific features like resume parsing, full-text search on applications, and trend analysis based on keywords. While these remain objectives, the project's scope has expanded. The current focus is on making the UI and API as generic and reusable as possible, inspired by React's component philosophy. This is to provide a streamlined development experience for simple applications meant to facilitate data entry, such as a job application tracker but also any other simple trackers needing data entry forms. With that said, the application has adaptability built-in as a core concept and should adhere to data model changes quickly and effectively.
The UI implements a dynamic form system that is agnostic to the specific form fields or their number. Similarly, the API generates CRUD endpoints with minimal configuration.
- FastAPI: A modern, fast (high-performance) web framework for building APIs with Python.
- Pydantic: Data validation and settings management using Python type annotations.
- SQLAlchemy: SQL toolkit and Object-Relational Mapping (ORM) library for Python.
- PostgreSQL: An open-source relational database management system (RDBMS).
- Streamlit: An open-source app framework for Data Science projects.
- Docker: Containerization platform to simplify deployment and development.
- Docker: Ensure Docker is installed on your system.
-
Clone the Repository:
git clone https://github.com/MrChadMWood/application_tracker.git cd application_tracker
-
Start the Application:
docker-compose up
-
Access the UI:
- Open your browser and go to
http://localhost:8501
for the Streamlit interface. - The API will be accessible at
http://localhost:8000
.
- Open your browser and go to
- UI: Built using Streamlit, running on port
8501
. - API: FastAPI backend, running on port
8000
. - Database: PostgreSQL, running on port
5432
.
The UI is built with Streamlit and provides a simple, interactive interface for managing job application data. It includes forms for CRUD operations and data visualization.
The UI employs a dynamic form system where fields are generated based on the selected entity (e.g., Resumes, Postings, Applications). This allows users to create new records and, if necessary, dynamically add related fields from parent tables with foreign keys.
- Multiform Transactions: Implementing API-level transactions to ensure all required forms are completed in a single operation, reducing the chances of incomplete data en