Carl is a web application for tracking important events during the job search. The app allows users to log entries, compare companies and view personal analytics (i.e. applications per week, application status, offer amounts).
- Backend: Python, Flask, SQLAlchemy, PostgreSQL
- Frontend: React.js, React-Router, Material UI, Recharts, Victory
- APIs: NewsAPI
Carl is an app built with a Python-Flask backend, supported by a PostgreSQL database and SQLAlchemy as the ORM. The React.js frontend uses the ES6 fetch promise API to make requests to the backend. The app uses React-Router to source components based on specific frontend routes. In terms of design, the app uses Material UI for various components and Recharts and Victory for the Analytics feature.
View the screencast here: Carl
Create new entries for important job-search-related events.
View and edit entries, review activity and find recent news articles about a specific company.
Compare companies, applications, and offers. Log pros and cons per selected company.
View personal analytics based on time-series data for each logged application.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- Node.js
- Python2
npm install package.json
npm run build-dev
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
python src/server.py (runs on localhost:5000)
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
source src/secrets/sh
python src/server.py (runs on localhost:5001)
Get your own secret keys for NewsAPI. Save them to a file secrets.sh. Your file should look something like this:
export SECRET_KEY='YOUR_SECRET_KEY'
Backend tests involve a setup, which connects to the database, includes a sample user and password with a session token. The following parts of the app are tested:
- Registration.
- Authentication.
- Displaying a single application.
- Form submission.
To run tests:
python tests.py
- [React.js] (https://reactjs.org/) - Used for frontend framework
- [Material-UI] (http://www.material-ui.com/#/) - Used for frontend UI components
- [Victory] (http://formidable.com/open-source/victory/) - Used for charts
- [Flask] (http://flask.pocoo.org/docs/0.12/) - Used for backend and frontend servers
- [PosgreSQL] (https://www.postgresql.org/) - Used for database management