{"id":18345473,"url":"https://github.com/dnlzrgz/artifica","last_synced_at":"2025-08-22T06:03:33.245Z","repository":{"id":62946071,"uuid":"558479097","full_name":"dnlzrgz/artifica","owner":"dnlzrgz","description":"Artifica is a personal web portfolio designed as a personal OS following the Fluent Design System made by Microsoft for the Windows operating system.","archived":false,"fork":false,"pushed_at":"2022-12-24T10:07:33.000Z","size":2361,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-21T20:51:12.999Z","etag":null,"topics":["django","django-project","fluent","fluent-design","portfolio","portfolio-website","python","tailwindcss","wagtail","wagtail-cms","web","website"],"latest_commit_sha":null,"homepage":"https://daniarlert.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dnlzrgz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-27T16:19:00.000Z","updated_at":"2025-02-19T06:24:06.000Z","dependencies_parsed_at":"2023-01-30T20:30:56.311Z","dependency_job_id":null,"html_url":"https://github.com/dnlzrgz/artifica","commit_stats":null,"previous_names":["dnlzrgz/artifica"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnlzrgz%2Fartifica","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnlzrgz%2Fartifica/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnlzrgz%2Fartifica/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnlzrgz%2Fartifica/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dnlzrgz","download_url":"https://codeload.github.com/dnlzrgz/artifica/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247457235,"owners_count":20941900,"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":["django","django-project","fluent","fluent-design","portfolio","portfolio-website","python","tailwindcss","wagtail","wagtail-cms","web","website"],"created_at":"2024-11-05T21:08:18.679Z","updated_at":"2025-04-06T08:31:42.944Z","avatar_url":"https://github.com/dnlzrgz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Artifica - A personal OS-like portfolio.\n\n\u003e Artifica is a work in progress and a personal project.\n\nArtifica is an OS-like Personal Web Portfolio designed following the [Fluent Design System](https://www.microsoft.com/design/fluent/) made by Microsoft for the Windows operating system. It was inspired by the awesome [MAD](https://mad.ac/) Studio's page.\n\n![Light mode screenshot](./assets/screenshot-light.png)\n![Dark mode screenshot](./assets/screenshot-dark.png)\n\n## Features\n\n- Powered by Django.\n- Wagtail as the CMS.\n- Modern Front-End workflow.\n- Easy to add JS \u0026 CSS libraries.\n- Ready to deploy with Docker.\n- Developed following the [the 12-factor methodoly](https://www.12factor.net/).\n- Support for light/dark mode.\n- _Almost_ functional \"applets\".\n- Ready to deploy.\n\n## Stack\n\n- Django\n- Wagtail\n- Docker\n- Tailwind CSS \u0026 Flowbite\n- ESbuild\n- SQLite/PostgreSQL\n- Memcached/Redis.\n\n## Why?\n\nI have always liked my portfolios to present information about me and my stack, as well as my expertise. And Artifica is not an exception to that.\n\nArtifica's design is my way of breaking down the multiple areas in which I have been developing professionally throughout my career as a software developer. But, by dividing these areas into \"applets\" rather than sections, I am trying to show how all these areas are interrelated.\n\n## What are applets?\n\nApplets are the keystone on which the idea and the development of Artifica is based. Basically, they are small components that try to fulfill different functions. For example, some applets are just links to other sites or sections while others pretend to have functionality and work as a full application.\n\nThe list of applets and their functionality is a work in progress but the list of applets that can be used right now is:\n\n- Button.\n- Contact.\n- Social links.\n- Notes.\n- Pomodoro.\n- Textual applet.\n- To Do.\n\n\u003e You can create and manage these applets using the Wagtail admin page.\n\n## Installation\n\nThe best way to start working with Artifica is to clone this respositoy:\n\n```bash\ngit clone https://github.com/daniarlert/artifica\n```\n\nSetup a Python's virtual environment and install the dependencies. I personally prefer to use [poetry](https://python-poetry.org/) but since the requirements are listed in a plain `requirements.txt` you can use any tool you want.\n\n```bash\npoetry install\n\n# Or\n\npython -m pip install -r requirements\n```\n\nSince Artifica uses modern Front-End libraries like Tailwind CSS and some npm modules, you would also need to have installed Node.js in your development setup. To install the necessary dependencies just run:\n\n```bash\ncd artifica/frontend \u0026\u0026 npm install\n```\n\nThis project also has setup some git hooks focused on the maintenance of the dependencies and the code format. To activate them, run with the virtual environment activated the following command:\n\n```bash\npre-commit install\n```\n\n## Development setup\n\n\u003e TODO:\n\n### Front-End\n\n\u003e TODO:\n\n## `ENV` variables\n\nFor development, the only `env` variable that you'll need is `DEBUG` whose value does not really matter as long as it has one:\n\n```plain\nDEBUG=on\n```\n\n\u003e If instead of using `manage.py runserver` you want to use the `entrypoint.sh` you'll need to also specify a `PORT` `env` variable.\n\nFor production is recommended to set the below `env` variables.\n\n```plain\nDJANGO_ALLOWED_HOSTS=\nDJANGO_CSRF_TRUSTED_ORIGINS=\nDJANGO_SECRET_KEY=\nDJANGO_LOG_LEVEL=\nDJANGO_LOG_BASIC_FILE=\nDJANGO_LOG_DETAILED_FILE=\n\nDATABASE_ENGINE=\nDATABASE_HOST=\nDATABASE_PORT=\nDATABASE_NAME=\nDATABASE_USER=\nDATABASE_PASSWORD=\n\nCACHE_ENGINE=\nCACHE_URL=\n```\n\nOther `env` variables may be needed depending on your deployment pipeline. For example, for render you will need to add the `RENDER_EXTERNAL_HOSTNAME` variable.\n\n\u003e Note that if you are using the `docker-compose.yaml` file it expects an `.env.prod` file.\n\n## Logging\n\n\u003e TODO:\n\n## Cache\n\nArtifica comes with [redis-py](https://pypi.org/project/redis/) and [hiredis](https://pypi.org/project/hiredis/). To start using Redis add the following `env` variables to your `.env` file:\n\n```env\nCACHE_ENGINE=django.core.cache.backends.redis.RedisCache\nCACHE_URL=redis://127.0.0.1:6379\n```\n\nIf the `CACHE_ENGINE` and `CACHE_URL` `env` variables are not setup. It will use [dummy caching](https://docs.djangoproject.com/en/4.1/topics/cache/#dummy-caching-for-development).\n\n## Database\n\n### SQLite\n\n\u003e TODO:\n\n### PostgreSQL\n\n\u003e TODO:\n\n## Deploy\n\n### render\n\nIf you're going to deploy this project to [render](render.com) It's recommended to check first their [quickstart guide](https://render.com/docs/deploy-django).\n\nAlthough this project contains a `render.yaml` file, unless you modify it, the deployment will need to be manual as specified in the guide mentioned above.\n\n### Railway\n\nTo deploy this project on [Railway](https://railway.app/) first create a new project with a Redis and a PostgreSQL services. Then, connect your cloned Artifica repository to Railway and it will pick up automatically the `Dockerfile`. Now set all the necessary `env` variables and you'll be good to go.\n\nFor more information about Railway just go to their [documentation](https://docs.railway.app/).\n\n## Docker\n\n### Docker image\n\n\u003e I decided to use a `slim` base Docker image instead of an `alpine` one. If you want to learn more about the \"why\" please, read [this article](https://pythonspeed.com/articles/alpine-docker-python/).\n\n\u003e TODO:\n\n### Docker compose\n\n\u003e TODO:\n\n## Work in progress\n\nArtifica is a work in progress and a personal project. By this I mean that there will be certain features that I will not implement and others that I will work on at my own discretion.\n\nIf you are someone who wants to contribute to the code of this project please open an issue first.\n\n## Contributions\n\nThis project follows the [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) specification. If a contribution does not follow this specification, it will not be accepted. Code with bad formatting will also not be accepted.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnlzrgz%2Fartifica","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdnlzrgz%2Fartifica","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnlzrgz%2Fartifica/lists"}