Skip to content

Enhanced Django project as a GoogleCloud AppEngine service

License

Notifications You must be signed in to change notification settings

Generic-Tree/django-at-appengine

Repository files navigation

Django Project at AppEngine

This intends to be an readme-documented, open-source-licensed, semantic-versioned, conventional-committed and changelogged git repository starting point for the development of a brand-new twelve-factor Django project

A straightforward beginning for an open-source Django project repository

Beside brings GAE's expected file system structure, generic-named powered-up Django project base and useful Makefile targets to help development process, it also provides deploy-on-push automation through the use of Google's official deploy-appengine Github action.

Table of Contents

See all

Getting started

First of all, create a new repository from this template,
Name it accordingly and place where it best fits for your team.

Development environment

Make sure you have Git, Make and Python installed:

$ git --version
git version 2.25.1
$ make --version
GNU Make 4.2.1
$ python3 --version
Python 3.9.0+

Thus, clone the recent-created repository locally, and set up its development environment:

$ make init
$ . venv/bin/activate

Finally, you are ready to create your Django's first app and proceed developing your application.

Continuos deployment setup

You will need to have a Google Cloud Project configured. So, through its console, enable the App Engine Admin API and also set up a Service Account to your project, registering its key into your fresh-repo secrets as GCP_SA_KEY.

For more details, check deploy appengine action description.

Repo publication

After all, you should make this project your own:
Write a good README to present it to the world.
And also ensure to tailor the project license to your needs.

Project specifications

Here some descriptions about this template project:

Features

This project shortens a repository start setup, considering:

It also powers up development workflow by:

  • Inclusion of an appropriate .gitignore and .gcloudignore files
  • Inclusion of a minimal requirements file
  • Inclusion of a proficient Makefile that improve development management
  • Inclusion of preconfigured Django project settings functionalities
  • Inclusion of a structed app.yaml (App Engine service settings) file

And configures continuous delivery workflow to:

  • Deploy application on Google App Engine

Folder structure

.
├── .git/                       Version control system folder
├── .github                     Github repo's configuration directory
│   └── workflows               Continuous integration settings
│       └── deploy.yml          Deploy-on-push automation descriptor
├── .gcloudignore               GCP ignored files manifest
├── .gitignore                  VCS ignored files manifest
├── app.yml                     App Engine service settings
├── CHANGELOG.md                Release notes description
├── LICENSE                     License file
├── Makefile                    Development management facilities
├── README.md                   Repo readme document
├── requirements.txt            Python dependency descriptor
└── src
    ├── __project__             Django project root folder
    └── manage.py               Django's command-line utility

Maintenance

This project is maintained by the author, @artu-hnrq.
It has reached a stable, usable state and is being actively developed.

License

This project is published under the permissions established by GNU General Public License v3.0.