This page describes the directory layout and the application structure of GeniePy.

Project Layout

The initial directory structure looks as follows:

~/W/p/geniepy/code main ❯ tree -a -L 1 .
├── .env
├── .git
├── .gitattributes
├── .github
├── .gitignore
├── .pre-commit-config.yaml
├── .web
├── Taskfile.yml
├── app
├── assets
├── db.sqlite
├── dist
├── poetry.lock
├── pyproject.toml
├── sample.env
└── test_db.sqlite

7 directories, 13 files


GeniePy support Github Actions as one of the continuous integration targets.

This directory contains the workflow definitions that will enable continuous testing for your application, if you've chosen Github as the source code hosting service.


An initial gitignore file for the project.


We use the pre-commit framework for managing Git's pre-commit hooks.

This YAML file specifies pre-commit's configuration.


Reflex compiles your Python code to a Next.js application and stores its contents inside .web. As such, this directory is important for local development but you should ideally never have to touch it.

This file contains the project's README. We've left the file empty so you can fill it up with details about your project.


The app directory contains all the application source code. We'll talk about this in detail in a later section.


The assets directory contains the static assets (eg. images, icons, etc.) that your application requires.


pyproject.toml is a modern standard in the Python community to specify build system information for Python projects.

GeniePy uses this file to store the project metadata, the dependencies, and some configuration for those dependencies.


GeniePy uses Poetry to help you keep your project's dependencies pinned and fresh. poetry.lock is the lockfile that Poetry uses to lock those dependencies.

This file contains the Reflex configuration for your project. Check the Reflex configuration page for more details.


This file acts as a starting point for the environment variables for your application.

If you're initializing a new application, copy this file to .env and edit .env to have your application reflect the changes.