{"id":23377548,"url":"https://github.com/lucasgoncsilva/swarden","last_synced_at":"2026-04-28T11:02:02.065Z","repository":{"id":277458172,"uuid":"920863315","full_name":"LucasGoncSilva/swarden","owner":"LucasGoncSilva","description":"Created in Django as an MVC Framework, sWarden works as a real prototype of an online password and credential manager. This project uses security concepts in a practical and descriptive way.","archived":false,"fork":false,"pushed_at":"2025-02-06T18:45:13.000Z","size":50282,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-14T03:19:11.146Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LucasGoncSilva.png","metadata":{"files":{"readme":".github/README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-22T22:38:46.000Z","updated_at":"2025-01-29T00:01:29.000Z","dependencies_parsed_at":"2025-02-14T03:29:24.321Z","dependency_job_id":null,"html_url":"https://github.com/LucasGoncSilva/swarden","commit_stats":null,"previous_names":["lucasgoncsilva/swarden"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasGoncSilva%2Fswarden","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasGoncSilva%2Fswarden/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasGoncSilva%2Fswarden/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LucasGoncSilva%2Fswarden/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LucasGoncSilva","download_url":"https://codeload.github.com/LucasGoncSilva/swarden/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247779790,"owners_count":20994569,"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":["criptography","django","load-testing","password","password-manager","python","security","testing"],"created_at":"2024-12-21T18:15:37.412Z","updated_at":"2026-04-28T11:02:02.056Z","avatar_url":"https://github.com/LucasGoncSilva.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"./img/logo.svg\" height=\"300\" width=\"300\" alt=\"Logo sWarden\" /\u003e\n  \u003cbr\u003e\n  sWarden\n\u003c/h1\u003e\n\n![GitHub License](https://img.shields.io/github/license/LucasGoncSilva/swarden?labelColor=101010)\n![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/LucasGoncSilva/swarden/django_unittest.yml?style=flat\u0026labelColor=%23101010)\n\nCreated in Django as an MVC Framework, sWarden works as a real prototype of an online password and credential manager. This project uses security concepts in a practical and descriptive way.\n\nBoth class-based views and function-based views were used, so that the different paradigms implemented by the Framework can be exemplified in a practical way.\n\nIt adds to Django's security measures an initial logic of what a honeypot would be, more than 150 test cases including 4 load tests to certify the integrity of the system and encryption of the data stored in the database, all applicable in Docker.\n\n## Stack\n\n![HTML](https://img.shields.io/badge/HTML5-E34F26?style=for-the-badge\u0026logo=html5\u0026logoColor=white)\n![CSS](https://img.shields.io/badge/CSS3-1572B6?style=for-the-badge\u0026logo=css3\u0026logoColor=white)\n![Sass](https://img.shields.io/badge/Sass-CC6699?style=for-the-badge\u0026logo=sass\u0026logoColor=white)\n![JavaScript](https://img.shields.io/badge/JavaScript-323330?style=for-the-badge\u0026logo=javascript\u0026logoColor=F7DF1E)\n![Bootstrap](https://img.shields.io/badge/Bootstrap-712cf9?style=for-the-badge\u0026logo=bootstrap\u0026logoColor=712cf9\u0026color=fff)\n\n![Django](https://img.shields.io/badge/Django-092E20?style=for-the-badge\u0026logo=django\u0026logoColor=green)\n\n![PostgreSQL](https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)\n\n![Docker](https://img.shields.io/badge/Docker-2CA5E0?style=for-the-badge\u0026logo=docker\u0026logoColor=white)\n![Render](https://img.shields.io/badge/Render-46E3B7?style=for-the-badge\u0026logo=render\u0026logoColor=000\u0026color=fff)\n![Supabase](https://img.shields.io/badge/Supabase-181818?style=for-the-badge\u0026logo=supabase\u0026logoColor=3ecf8e)\n\n![uv](https://img.shields.io/badge/uv-2b0231?style=for-the-badge\u0026logo=uv)\n![Ruff](https://img.shields.io/badge/Ruff-2b0231?style=for-the-badge\u0026logo=ruff)\n![Material for MkDocs](https://img.shields.io/badge/Material%20for%20MkDocs-fff?style=for-the-badge\u0026logo=material-for-mkdocs\u0026logoColor=526cfe)\n\n![GitHub](https://img.shields.io/badge/GitHub-fff?style=for-the-badge\u0026logo=github\u0026logoColor=181717)\n![GitHub Pages](https://img.shields.io/badge/GitHub%20Pages-fff?style=for-the-badge\u0026logo=github-pages\u0026logoColor=222222)\n![GitHub Actions](https://img.shields.io/badge/GitHub%20Actions-2088ff?style=for-the-badge\u0026logo=github-actions\u0026logoColor=fff)\n\n## To-Do List\n\nTo check the to-do list and keep track of future implementations please check [To-Do List over here](https://lucasgoncsilva.github.io/swarden/TODO).\n\n## Arch\n\nThe architecture can be detailed in general terms on two levels: web and database. The mechanics are abstracted to a general level, avoiding in-depth details that confuse rather than aggregate, presenting a behavioral vision on a “macro” scale following the flow of data without focusing on the “micro”, such as each action of each function. Below is the flow of information on the Web, followed by the structuring and architecture of the Database (For more details on the Database go to [https://dbdocs.io/lucasgoncsilva04/SWARDEN](https://dbdocs.io/lucasgoncsilva04/SWARDEN)):\n\n### Web\n\n![sWarden Arch](./img/arch.svg)\n\n### DB\n\n![Database Arch](./img/db.svg)\n\n## Contrib\n\nBefore copying anything, we recommend you to read our guidelines: [Code of Conduct](https://lucasgoncsilva.github.io/swarden/CODE_OF_CONDUCT.md), [Contributing](https://lucasgoncsilva.github.io/swarden/CONTRIBUTING), [Security](https://lucasgoncsilva.github.io/swarden/SECURITY) and [Support](https://lucasgoncsilva.github.io/swarden/SUPPORT).\n\nOnce done with it, fork this repo to create a copy at your repos and clone your version:\n\n```sh\ngit clone git@github.com:\u003cYOUR_REPO\u003e/swarden.git\ncd swarden\n```\n\nNow you are ready to follow the next step, described below.\n\n## Running\n\n### Requirements\n\n- uv \u003e= 0.5.13\n- Python \u003e= 3.9\n- Docker \u003e= 27\n\n**uv** is basically the best project and dependency manager for Python. Check out the installation methods [here](https://docs.astral.sh/uv/).\n\n### Environment Variables\n\nBefore starting with development and commands, it is important to define the environment variables in your development environment. Below is a list of which ones to set:\n\n| Name                     |    Type     | Mandatory | Default               | Description                                  |\n| :----------------------- | :---------: | :-------: | :-------------------- | :------------------------------------------- |\n| `DJANGO_SETTINGS_MODULE` |    `str`    | Optional  | `'CORE.settings.dev'` | Defines the settings file to be used         |\n| `CAPTCHA_TEST_MODE`      |   `bool`    | Optional  | `True`                | Allows captcha bypass on login               |\n| `DATABASE_NAME`          |    `str`    | Optional  | `'postgres'`          | Defines database access name                 |\n| `DATABASE_USER`          |    `str`    | Optional  | `'postgres'`          | Defines database access user                 |\n| `DATABASE_PASSWORD`      |    `str`    | Optional  | `'postgres'`          | Defines database access password             |\n| `DATABASE_HOST`          |    `str`    | Optional  | `'localhost'`         | Defines database access host                 |\n| `ADMIN`                  |    `str`    | Optional  | `'__manager__'`       | Defines URI path to admin site               |\n| `DEBUG`                  |   `bool`    | Optional  | `True`                | Defines traceback and debug infos at browser |\n| `SECRET_KEY`             |    `str`    | Optional  | `'cw%t5...ba^m3)'`    | Defines general security stuff               |\n| `ALLOWED_HOSTS`          | `list[str]` | Optional  | `['*']`               | Defines valid URLs to be used                |\n\nOnce ok with env vars, sync the uv with `uv.lock` - this will create a `.venv` by itself:\n\n```sh\nuv sync\n```\n\n\u003e From here to below, run under `SWARDEN/` dir.\n\n### Start Docker's Database\n\n```sh\ndocker run --name psql_swarden -p 5432:5432 \\\n    -e POSTGRES_USER=postgres \\\n    -e POSTGRES_PASSWORD=postgres \\\n    -e POSTGRES_DB=postgres \\\n    -d postgres\n```\n\n### Start/Search for Database Migrations\n\n```sh\nuv run manager.py makemigrations\n```\n\n### Update Database Struct Based on New Migrations\n\n```sh\nuv run manager.py migrate\n```\n\n### Run Automated Tests\n\n```sh\nuv run manager.py test [--parallel N]  # N means num, integer\n```\n\n### Run Automated Tests w/ Coverage\n\n```sh\nuv run manager.py testwithcoverage\n```\n\n### Populate Database\n\n```sh\nuv run manager.py populateuser  # For users\n\n# And then\n\nuv run manager.py populatesecret  # For secrets\n```\n\n### Start Local Server\n\n```sh\nuv run manager.py runserver  # Default Django's server\n\n# OR\n\nuv run gunicorn CORE.wsgi:application --bind 0.0.0.0:8000  # Gunicorn at local\n```\n\n## License\n\nThis project is under [MPLv2 - Mozilla Public License Version 2.0](https://choosealicense.com/licenses/mpl-2.0/). Permissions of this weak copyleft license are conditioned on making available source code of licensed files and modifications of those files under the same license (or in certain cases, one of the GNU licenses). Copyright and license notices must be preserved. Contributors provide an express grant of patent rights. However, a larger work using the licensed work may be distributed under different terms and without source code for files added in the larger work.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasgoncsilva%2Fswarden","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucasgoncsilva%2Fswarden","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasgoncsilva%2Fswarden/lists"}