diff --git a/.github/img/readme_balance.png b/.github/img/readme_balance.png
new file mode 100644
index 0000000..992df65
Binary files /dev/null and b/.github/img/readme_balance.png differ
diff --git a/.github/img/readme_calculator.gif b/.github/img/readme_calculator.gif
new file mode 100644
index 0000000..00ef34d
Binary files /dev/null and b/.github/img/readme_calculator.gif differ
diff --git a/.github/img/readme_dca_1.png b/.github/img/readme_dca_1.png
new file mode 100644
index 0000000..179bca7
Binary files /dev/null and b/.github/img/readme_dca_1.png differ
diff --git a/.github/img/readme_dca_2.png b/.github/img/readme_dca_2.png
new file mode 100644
index 0000000..4be9e2f
Binary files /dev/null and b/.github/img/readme_dca_2.png differ
diff --git a/.github/img/readme_installment_plan.png b/.github/img/readme_installment_plan.png
new file mode 100644
index 0000000..f9605b6
Binary files /dev/null and b/.github/img/readme_installment_plan.png differ
diff --git a/.github/img/readme_recurring_transaction.png b/.github/img/readme_recurring_transaction.png
new file mode 100644
index 0000000..811382e
Binary files /dev/null and b/.github/img/readme_recurring_transaction.png differ
diff --git a/.github/img/readme_transaction.png b/.github/img/readme_transaction.png
new file mode 100644
index 0000000..f45c11a
Binary files /dev/null and b/.github/img/readme_transaction.png differ
diff --git a/.github/img/readme_transfer.png b/.github/img/readme_transfer.png
new file mode 100644
index 0000000..14e87f8
Binary files /dev/null and b/.github/img/readme_transfer.png differ
diff --git a/.github/img/readme_unit_price_calculator.png b/.github/img/readme_unit_price_calculator.png
new file mode 100644
index 0000000..a8632de
Binary files /dev/null and b/.github/img/readme_unit_price_calculator.png differ
diff --git a/README.md b/README.md
index adbf17d..752bf82 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,7 @@
**WYGIWYH** (_What You Get Is What You Have_) is a powerful, principles-first finance tracker designed for people who prefer a no-budget, straightforward approach to managing their money. With features like multi-currency support, customizable transactions, and a built-in dollar-cost averaging tracker, WYGIWYH helps you take control of your finances with simplicity and flexibility.
-## Why WYGIWYH?
+# Why WYGIWYH?
Managing money can feel unnecessarily complex, but it doesn’t have to be. WYGIWYH (pronounced "wiggy-wih") is based on a simple principle:
> Use what you earn this month for this month. Any savings are tracked but treated as untouchable for future months.
@@ -34,7 +34,7 @@ While this philosophy is simple, finding tools to make it work wasn’t. I initi
Frustrated by the lack of comprehensive options, I set out to build **WYGIWYH** — an opinionated yet powerful tool that I believe will resonate with like-minded users.
-## Key Features
+# Key Features
**WYGIWYH** offers an array of features designed to simplify and streamline your personal finance tracking:
@@ -46,7 +46,7 @@ Frustrated by the lack of comprehensive options, I set out to build **WYGIWYH**
* **Built-in Dollar-Cost Average (DCA) tracker**: Essential for tracking recurring investments, especially for crypto and stocks.
* **API support for automation**: Seamlessly integrate with existing services to synchronize transactions.
-## How To Use
+# How To Use
To run this application, you'll need [Git](https://git-scm.com) and [Docker](https://docs.docker.com/engine/install/) with the [docker-compose](https://docs.docker.com/compose/install/).
@@ -76,4 +76,277 @@ $ docker compose up -d --build
$ docker compose exec -it web python manage.py createsuperuser
```
-## How it works
+# How it works
+
+## Models
+
+### Transactions
+
+Transactions are the core feature of WYGIWYH, representing expenses or income in your accounts. Each transaction consists of the following fields:
+
+#### Type
+
+- **Income**: A positive amount entering your account
+- **Expense**: A negative amount exiting your account
+
+#### Paid Status
+
+A transaction can be either:
+
+- **Current**: When marked as paid
+- **Projected**: When marked as unpaid
+
+#### Account
+
+The account associated with the transaction. Required, limited to one account per transaction.
+
+#### Entity
+
+The party involved in the transaction:
+
+- For **Income**: The paying entity
+- For **Expense**: The receiving entity
+
+Optional field.
+
+#### Date
+
+The date when the transaction occurred. Required.
+
+#### Reference Date
+
+One of **WYGIWYH**'s key features. The reference date determines which month a transaction should count towards. For example, you can have a transaction that occurred on January 26th count towards February's finances.
+
+Optional - defaults to the transaction date's month if not specified.
+
+> [!CAUTION]
+> While designed primarily for credit card closing dates, this feature allows for debt rolling across months. Use responsibly to maintain accurate financial tracking.
+
+#### Type
+
+- Income, meaning a positive amount (usually) entering your account
+- Expense, meaning a negative amount exiting your account
+
+#### Description
+
+The name or purpose of the transaction. Required.
+
+#### Amount
+
+The monetary value of the transaction. Required.
+
+#### Category
+
+The primary classification of the transaction. Optional.
+
+#### Tags
+
+Additional labels for transaction categorization. Optional.
+
+#### Notes
+
+Additional information about the transaction. Optional.
+
+
+
+### Installment Plan
+
+An Installment Plan is a helper model that generates a series of recurring transactions over a fixed period.
+
+#### Core Fields
+
+- **Account**: The account for all transactions in the plan. Required.
+- **Entity**: The paying or receiving party for all transactions. Optional.
+- **Description**: The name of the installment plan, used for all transactions. Required.
+- **Notes**: Additional information applied to all transactions. Optional.
+
+#### Installment Configuration
+
+- **Number of Installments**: Total number of transactions to create (e.g., 1/10, 2/10)
+- **Installment Start**: Initial counting point
+- **Start Date**: Date of the first transaction
+- **Reference Date**: Reference date for the first transaction
+- **Recurrence**: Frequency of transactions (e.g., Monthly)
+
+
+
+### Transaction Details
+
+- **Amount**: Value for each transaction. Required.
+- **Category**: Primary classification for all transactions. Optional.
+- **Tags**: Labels applied to all transactions. Optional.
+
+### Recurring Transaction
+A Recurring Transaction is a helper model that generates recurring transactions indefinitely or until a certain date.
+
+#### Core Fields
+
+- **Account**: The account for all transactions in the plan. Required.
+- **Entity**: The paying or receiving party for all transactions. Optional.
+- **Description**: The name of the recurring transaction, used for all transactions. Required.
+- **Notes**: Additional information applied to all transactions. Optional.
+
+#### Recurring Transaction Configuration
+
+- **Start Date**: Date of the first transaction. Required.
+- **Reference Date**: Reference date for the first transaction. Optional.
+- **Recurrence Type**: Frequency of transactions (e.g., Monthly). Required.
+- **Recurrence Interval**: The interval between transactions (e.g. every 1 month, every 2 weeks, etc.). Required.
+- **End date**: When new transactions should stop being created. Optional.
+
+#### Transaction Details
+
+- **Amount**: Value for each transaction. Required.
+- **Category**: Primary classification for all transactions. Optional.
+- **Tags**: Labels applied to all transactions. Optional.
+
+#### Other information
+
+- Recurring transactions are checked and created every midnight using Procrastinate.
+- **WYGIWYH** tries to keep at most **6** future transactions created at any time.
+- If you delete a recurring transaction it will not be recreated.
+- You can stop or pause a recurring transaction at any time on the config page (/recurring-trasanctions/)
+
+
+
+### Account
+
+TO-DO
+
+### Account Groups
+
+TO-DO
+
+### Currency
+
+TO-DO
+
+### Exchange Rate
+
+TO-DO
+
+### Category
+
+TO-DO
+
+### Tag
+
+TO-DO
+
+### Entity
+
+TO-DO
+
+### Rule
+
+TO-DO
+
+---
+
+## Helper actions
+
+### Transfer
+
+A transfer happens when you move a monetary value from one account to another. This will create two transactions, one expense and one income with the values set by the user.
+
+Contrary to other finance trackers, due to our multi-currency support, **WYGIWYH**'s transfer system allows for non-zero transfers.
+
+
+
+### Balance (Account Reconciliation)
+
+A balance is a easy way of updating your accounts balance. It creates a transaction with the difference between the balance currently in **WYGIWYH** and the new balance informed by you.
+
+This can be useful for savings accounts or other interest accruing investments.
+
+---
+
+## Views
+
+### Monthly
+
+TO-DO
+
+### Yearly by currency
+
+TO-DO
+
+### Yearly by account
+
+TO-DO
+
+### Calendar
+
+TO-DO
+
+### Networh
+
+#### Current
+
+TO-DO
+
+#### Projected
+
+TO-DO
+
+### All Transactions
+
+TO-DO
+
+### Configuration and Management
+
+TO-DO
+
+---
+
+## Tools
+
+### Calculator
+
+The calculator is a floating widget that can be toggled by clicking the calculator icon on the navbar.
+
+It allows for any math expression supported by [math.js](https://mathjs.org).
+
+
+
+### Dollar Cost Average Tracker
+
+The DCA Tracker can be accessed from the navbar's **Tools** menu.
+
+It allows for tracking DCA strategies and getting helpful information and insights.
+
+> [!IMPORTANT]
+> Currently DCA exists separately from your main transactions. You will need to add your entries manually.
+
+
+
+### Unit Price Calculator
+
+The Unit Price Calculator can be accessed from the navbar's **Tools** menu.
+
+This is a self-contained tool for comparing and finding the most cost-efficient item quickly and easily.
+
+Input the price and the amount of each item, the cheapeast will be highlighted in green, and the most expensive in red.
+
+You can add additional items by clicking the _Add_ button at the end of the page.
+
+> [!NOTE]
+> This doesn't do unit convertion. The amount of all items needs to be on the same the unit for proper functioning.
+
+
+
+### Currency Converter
+
+TO-DO
+
+# Built with
+
+WYGIWYH is possible thanks to a lot of amazing open source tools, to name a few:
+
+- Django
+- HTMX
+- _hyperscript
+- Procrastinate
+- Bootstrap
+- Tailwind
+- Webpack