Billwise is my first fullstack project in Django Rest Framework, NextJS and Celery.
The purpose of the app is to manage payments from different suppliers in one place. No more logging to every supplier page separately. Here you have everything in one complex dashboard with overall view, statistics and charts.
- Render (Redis)
- DigitalOcean (API and Celery)
- Koyeb (Frontend)
to minimize costs. You can see the App in action here.
You can also run the app locally using Docker. There are ready to use Dockerfiles and docker-compose. You only need to clone the repository and run docker compose.
git clone https://github.com/Martini310/billwise.git
And run the container
docker-compose up
If you want to run all the services manually it is also easy but require a little more work.
Before you get started, make sure you have the following installed:
Firstly clone the repo
git clone https://github.com/Martini310/billwise.git
Then install required prerequisites
pip install -r requirements.txt
Migrate data into Database. Default Database is SQLite, if you want to configure another DB set it in settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
and then:
python manage.py migrate
Locally I use RabbitMQ and Redis on Render. You can change it here:
CELERY_BROKER_URL = os.environ.get('CELERY_BROKER', 'pyamqp://guest@rabbitmq:5672//')
python manage.py runserver
cd frontend
npm start
celery -A billwise worker -l info --pool=solo
celery -A billwise beat -l INFO --scheduler django_celery_beat.schedulers:DatabaseScheduler
celery -A billwise flower --port=5555
The App is available under localhost:3000
some usage description
You can customize Billwise Project by modifying the configuration in settings.py
. Here are some of the available settings:
DEBUG_MODE
: Set toTrue
to enable debug mode.DATABASES
: By default Billwise is running locally with sqlite, you can specify another database if needed.ACCESS_TOKEN_LIFETIME
: Set lifetime of the acces tokenCELERY_BEAT_SCHEDULE
: Set your own scheduled tasks.
Main features for now:
- ✅ Payments synchronized with major platforms in Poland (PGNiG, Enea, Aquanet)
- ✅ Yearly summary with monthly chart and year-2-year comparission
- ✅ Newest/Nearest Payment
- ✅ Payment Percentage
- ✅ Month summary with month-2-month comparission
- ✅ Add own invoices manually
- ✅ Invoice details in modal window
- ✅ Background worker to scheduled data fetching
Plans:
- 🔜 Real-time notifications
- ✅ Autheticate with Google
- 🔜 Email notifications
- 🔜 Payments directly from app
- 🔜 Many more suppliers (Inea, Orange, Tmobile etc.)
- 🔜 Dark mode
Welcome contributions! Here's how to get started:
- Report issues on my Issue Tracker.
- Submit pull requests with improvements or bug fixes.
This project is licensed under the MIT License. See the LICENSE file for details.
If you encounter any issues or have questions, please send me an email
Implemented Google authentication