{"id":15066642,"url":"https://github.com/rocowoco/financial-accounting","last_synced_at":"2026-01-02T23:05:56.716Z","repository":{"id":257471249,"uuid":"858371933","full_name":"Rocowoco/financial-accounting","owner":"Rocowoco","description":"Financial control web application using Django","archived":false,"fork":false,"pushed_at":"2024-09-17T13:15:26.000Z","size":55,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T14:45:37.687Z","etag":null,"topics":["backend","django","financial-analysis","personal-website","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rocowoco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-16T19:25:37.000Z","updated_at":"2024-09-18T18:29:52.000Z","dependencies_parsed_at":"2024-09-17T00:50:55.720Z","dependency_job_id":"bf581ecd-57fe-4afa-9539-b14fd0e85f33","html_url":"https://github.com/Rocowoco/financial-accounting","commit_stats":null,"previous_names":["rocowoco/financial-accounting"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rocowoco%2Ffinancial-accounting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rocowoco%2Ffinancial-accounting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rocowoco%2Ffinancial-accounting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rocowoco%2Ffinancial-accounting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rocowoco","download_url":"https://codeload.github.com/Rocowoco/financial-accounting/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243814893,"owners_count":20352038,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","django","financial-analysis","personal-website","python"],"created_at":"2024-09-25T01:10:11.888Z","updated_at":"2026-01-02T23:05:56.628Z","avatar_url":"https://github.com/Rocowoco.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Financial Accounting Service\n\nA **Django-based financial accounting service** for managing personal finances. This application allows users to track their income and expenses, view reports, and create budgets. The project is structured with a focus on backend architecture, without a frontend.\n\n## Features\n\n- Manage income and expenses.\n- Create and manage budgets.\n- View financial reports.\n- Admin panel for managing users, transactions, and budgets.\n\n## Table of Contents\n\n1. [Installation](#installation)\n2. [Project Structure](#project-structure)\n3. [Setup](#setup)\n4. [Admin Panel](#admin-panel)\n5. [Backend-Only Structure](#backend-only-structure)\n6. [Models](#models)\n7. [License](#license)\n\n## Installation\n\nTo set up this project locally, follow these steps:\n\n### 1. Clone the repository:\n\n```bash\ngit clone https://github.com/Rocowoco/financial-accounting.git\n\n```\n### 2. Navigate to the project directory:\n\n```bash\ncd financial-accounting\n```\n\n### 3. Set up a virtual environment:\nFor Windows:\n```bash\npython -m venv venv\nvenv\\Scripts\\activate\n```\nFor MacOS/Linux:\n```bash\npython3 -m venv venv\nsource venv/bin/activate\n```\n\n### 4. Install dependencies:\n\n```bash\npip install -r requirements.txt\n```\n\n### 5. Install Pillow (required for handling image fields):\n\n```bash\npip install Pillow\n```\n\n## Project Structure\n\nHere is the project structure:\n\n```plaintext\nfinancial-accounting/\n│\n├── apps/\n│   ├── budgets/         # Managing budgets: setting limits by categories and periods\n│   ├── categories/      # Managing categories for transactions and budgets\n│   ├── reports/         # Managing reports: graphs, charts and statistics on income and expenses\n│   ├── transactions/    # Managing income and expenses: adding, editing and deleting transactions\n│   ├── users/           # Managing users: registration, authentication, profile editing\n│   └── usettings/       # Managing user settings: currency selection, language, date format\n│\n├── finaccounting/       # Main Django project configuration\n├── templates/           # HTML-files for apps\n│\n├── .gitignore           # List of files and directories ignored by git\n├── manage.py            # Django's command-line utility for administrative tasks\n├── requirements.txt     # Python dependencies required by the project\n├── README.md            # Guide for devs, explaining what the project is and how to set it up\n└── venv/                # Virtual environment (not committed to version control)\n```\n## Setup\n\n### 1. Migrate the database:\n\n```bash\npython manage.py makemigrations\npython manage.py migrate\n```\n\n### 2. Create a superuser:\nTo access the Django admin interface, create a superuser account:\n\n```bash\npython manage.py createsuperuser\n```\nFollow the prompts to set up the superuser credentials.\n\n### 3. Run the development server:\nStart the Django development server:\n\n```bash\npython manage.py runserver\n```\nVisit http://127.0.0.1:8000/ to view the app locally and http://127.0.0.1:8000/admin/ to access the admin panel.\n\n## Admin Panel\n\nTo manage transactions, budgets, and user settings, log into the admin panel using the superuser account you created.\n\n```plaintext\nhttp://127.0.0.1:8000/admin/\n```\nAdmin Features:\n- Manage transactions: Add, edit, or delete income and expense transactions.\n- Manage budgets: Create and manage personal budgets.\n- Manage users: Edit user details, set permissions, and assign avatars.\n\n\n## Backend-Only Structure\n\nThis project focuses solely on the backend, with the architecture designed to manage personal finance data efficiently. It doesn't include any frontend code, but it’s structured in a way that makes it easy to extend with APIs or a web-based user interface in the future.\n\nKey points about this structure:\n- **Backend-focused:** All interactions happen through Django views, models, and the admin panel.\n- **Extensible:** You can easily integrate a REST API or a frontend framework like Vue or React if needed.\n- **Modular:** Each major feature (transactions, budgets, categories) is its own Django app, making it easier to maintain and expand.\n\n\n## Models\n\n### 1. Transaction (`apps.transactions.models.Transaction`):\n\nRepresents individual financial transactions (income/expenses).\n\n- `user`: Foreign key to the CustomUser model, linking the transaction to a user.\n- `category`: Foreign key to the Category model. Null if the category is deleted.\n- `amount`: Decimal field for the transaction amount, up to 10 digits with 2 decimal places.\n- `description`: Optional text description of the transaction.\n- `transaction_type`: CharField to specify whether it's an income or expense.\n- `date`: Date when the transaction occurred.\n\n### 2. Budget (`apps.budgets.models.Budget`):\n\nUsed to manage personal budgets.\n\n- `user`: Foreign key to the CustomUser model, linking the budget to the user.\n- `category`: Foreign key to the Category model, specifying the budget's category. Null if the category is deleted.\n- `limit`: Decimal field for the maximum budget amount, up to 10 digits with 2 decimal places.\n- `start_date`: Date when the budget period starts.\n- `end_date`: Date when the budget period ends.\n\n### 3. Category (`apps.categories.models.Category`):\n\nCategories for organizing financial transactions.\n\n- `user`: Foreign key to the CustomUser model, linking the category to the user who created it.\n- `name`: CharField for the category name, up to 100 characters.\n- `description`: Optional text field for additional details about the category.\n\n### 4. CustomUser (`apps.users.models.CustomUser`):\n\nTo manage user-specific data, such as avatars, groups, permissions.\n\n- `avatar`: Optional image field for storing the user's avatar, with images uploaded to the avatars/ directory.\n- `groups`: Many-to-many relationship with auth.Group, indicating the groups the user belongs to, with a custom related name.\n- `user_permissions`: Many-to-many relationship with auth.Permission, specifying permissions granted to the user, with a custom related name.\n\n### 5. Report (`apps.reports.models.Report`):\n\nTo manage reports: graphs, charts and statistics on income and expenses.\n\n- `user`: Foreign key to the CustomUser model.\n- `transactions`: Many-to-many relationship with Transaction.\n- `start_date`: Start date of the report period.\n- `end_date`: End date of the report period.\n\n### 6. UserSettings (`apps.usettings.models.UserSettings`):\n\nTo manage user settings: currency selection, lang, date format.\n\n- `user`: One-to-one relationship with the CustomUser model.\n- `currency`: CharField for the user's preferred currency (default is 'USD').\n- `language`: CharField for the user's preferred language (default is 'en').\n- `dark_mode`: Boolean field indicating if dark mode is enabled (default is False).\n\n## License\n\nThis project is licensed under the MIT License. See the LICENSE file for more information.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocowoco%2Ffinancial-accounting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frocowoco%2Ffinancial-accounting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocowoco%2Ffinancial-accounting/lists"}