- User
- This table will store user information
- Portfolio
- This table will store portfolio information
- Currently, it doesn't add much value, but allows for extensibility, such as allowing a user to create multiple portfolios
- CurrencyAllocation
- This table will store the cryptocurrencies associated with a particular portfolio
- Currency
- This table stores all available currencies in the system
- This should be mostly static data (name, symbol, etc.)
- CurrencySnapshot
- This table stores market data for all currencies.
- It will contain one row for each currency
- This table will be updated daily with the latest market data.
- project/
- Django App
- REST API
- Scheduled Celery task that pulls ctypto data from CoinGecko and syncs with database
- ui/
- React App
- docker-compose.yml
- Used for spinning up local resources for development
- Redis (Celery Broker)
- Celery Beat
- Celery Worker
- Postgres
- Dockerfile.celery
- Dockerfile that defines the container for celery beat and worker processes to run in
Crypto market data gathered via coingecko's public API (https://api.coingecko.com/api)
- Improve usage of serializers
- Standardized exception handling / response messages
- Client is not organized at all, focus was on django backend
- State management is pretty sloppy, all just thrown into a single context with setters drilled down to components
- AuthN/AuthZ
- clone the repo
- cd into repo
- run
pipenv install
- run
pipenv shell
- run
docker compose up -d
- cd into project/
- run
python manage.py migrate
- cd into ui/
- run
npm install
- run
npm run dev
- site should be running at http://localhost:1234