Code Structure¶
Let’s go through the basics of the file structure and folders, We won’t cover the entire file structure, just the essentials.
.github
: Contains GitHub Actions workflows and Dependabot configurations. More details on this can be found in the packages and tools section.docs
: Documentation for your project generated with Sphinx. More details on this can be found in the packages and tools section.project_dir
: The core of your Django project. It contains all the essentials of your Django project:settings
,root urls
,applications
,templates
, andstatic
files. Your apps will be located here when using the start-app command that comes with Falco.project_dir/__main__.py
: This file is the entry point of your project. It is mainly meant for production and building the binary of your project. More details on this can be found in the packages and tools section.deploy
: Contains all tools and configuration files related to deployment, such as Dockerfile, s6-overlay, etc. You can also add your Nginx and systemd files here if you use those. The goal is to keep all files related to deployment in the same place and sync them with the server when needed. This way, it is easier to keep track of all configurations involved in deployment.justfile
: A file that contains the commands you can run with thejust
command. It also serves as a convenient way to document frequently used commands in your project.pyproject.toml
: A file that contains the project metadata, dependencies, and some tool configurations. More details on this can be found in the dependency section.CHANGELOG.md
: A file that contains the project changes. This file will automatically be filled usinggit-cliff
. More details on this can be found in the package and tools section.playground.ipynb
: This is meant as a playground for writing ORM Django queries. More details on this can be found in the packages and tools section..pre-commit-config.yaml
: A file that contains the pre-commit configurations. When configured, the hooks defined inside will run before any commits and will perform some linting and code formatting.
myjourney
├── .github
├── deploy
├── docs
├── myjourney
├── tests
├── .dockerignore
├── .editorconfig
├── .env.template
├── .gitignore
├── .pre-commit-config.yaml
├── CHANGELOG.md
├── README.md
├── db.sqlite3
├── justfile
├── manage.py
├── playground.ipynb
└── pyproject.toml
myjourney
├── .github
│ ├── workflows
│ └── dependabot.yml
├── deploy
│ ├── etc
│ ├── Dockerfile
│ └── Dockerfile.binary
├── docs
│ ├── applications
│ ├── changelog.rst
│ ├── conf.py
│ └── index.rst
├── myjourney
│ ├── core
│ ├── static
│ ├── templates
│ ├── __init__.py
│ ├── __main__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── tests
│ ├── __init__.py
│ ├── conftest.py
│ └── test_assert_true.py
├── .dockerignore
├── .editorconfig
├── .env.template
├── .gitignore
├── .pre-commit-config.yaml
├── CHANGELOG.md
├── README.md
├── db.sqlite3
├── justfile
├── manage.py
├── playground.ipynb
└── pyproject.toml
myjourney
├── .github
│ ├── workflows
│ │ ├── cd.yml
│ │ └── ci.yml
│ └── dependabot.yml
├── deploy
│ ├── etc
│ │ └── s6-overlay
│ ├── Dockerfile
│ └── Dockerfile.binary
├── docs
│ ├── applications
│ │ ├── users
│ │ └── index.rst
│ ├── changelog.rst
│ ├── conf.py
│ └── index.rst
├── myjourney
│ ├── core
│ │ ├── __init__.py
│ │ └── apps.py
│ ├── static
│ │ └── vendors
│ ├── templates
│ │ ├── .well-known
│ │ ├── pages
│ │ ├── 403.html
│ │ ├── 403_csrf.html
│ │ ├── 404.html
│ │ ├── 500.html
│ │ ├── base.html
│ │ ├── base_email.html
│ │ └── robots.txt
│ ├── __init__.py
│ ├── __main__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── tests
│ ├── __init__.py
│ ├── conftest.py
│ └── test_assert_true.py
├── .dockerignore
├── .editorconfig
├── .env.template
├── .gitignore
├── .pre-commit-config.yaml
├── CHANGELOG.md
├── README.md
├── db.sqlite3
├── justfile
├── manage.py
├── playground.ipynb
└── pyproject.toml