diff options
Diffstat (limited to 'python-hybrid-django-react.spec')
-rw-r--r-- | python-hybrid-django-react.spec | 441 |
1 files changed, 441 insertions, 0 deletions
diff --git a/python-hybrid-django-react.spec b/python-hybrid-django-react.spec new file mode 100644 index 0000000..48658da --- /dev/null +++ b/python-hybrid-django-react.spec @@ -0,0 +1,441 @@ +%global _empty_manifest_terminate_build 0 +Name: python-hybrid-django-react +Version: 0.2.2 +Release: 1 +Summary: Django starter project template. Dockerized Django serving a static React app +License: MIT +URL: https://github.com/gmso/hybrid-django-react +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/e2/cd/768f6374bab0bcd36a02ac76ab5ec33d566d1dc7d4e70fa400b4dc039f51/hybrid-django-react-0.2.2.tar.gz +BuildArch: noarch + + +%description +## Starter project template +# 🤠⚛️ Dockerized hybrid Django React app +Starter project template using Docker to build a Django app that serves React apps statically (as JavaScript files) + +## Tech stack + - Django (with Rest framework, PostgreSQL, SMTP gmail backend, whitenoise, etc.) + - React (bundled with webpack and transpiled with babel) + - Docker + - Deployment to Heroku + +## Prerequisites + - Docker + - pip, poetry, pyenv or a similar tool to access [pypi](https://pypi.org/) + +## Installation +Install with the following command +``` +pip install hybrid-django-react +``` + +## Usage +Run the scripts with the following command: +``` +create-django-react-app +``` + +You will be prompted for some information like project name, email, etc. This data is needed to change the configuration files accordingly + +After the script has run, you don't need this tool anymore 😀 + +Simply start the docker container to start working: +``` +docker-compose up -d +``` + +You can then work as usual on your Django project. + +The entry point of the React render can be edited from the file `frontend/index.js` + +## Debugging with Docker and VSCode + +Support for debugging remotely with VSCode is supported out-of-the-box. + +To debug with Docker: + +1. Run your Docker containers as usual: `docker-compose up -d --build` + +3. Start the debug session from VS Code for the `[django:docker] runserver` configuration (either from the Debugger menu or with `F5`) + + - Logs will redirect to your integrated terminal as well. + +4. Set some breakpoints in functions or methods executed when needed. Usually it's Model methods or View functions + +## Adding external libraries + +It's better to install external libraries from from Docker directly + +### Python libraries: + - Production libraries + ``` + docker-compose exec web poetry add [pip_package] + ``` + - Development libraries + ``` + docker-compose exec web poetry add [pip_package] --dev + ``` +### JavaScript libraries: + - Production libraries + ``` + docker-compose exec web npm install [npm_package] + ``` + - Development libraries + ``` + docker-compose exec web npm install -D [npm_package] + ``` + +## Deploy to Heroku +### First setup +1. [Create an account](https://www.heroku.com) and [install Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) +2. Create a new app on Heroku + ``` + heroku create + ``` + Your app will get a randomly generated name, like _lazy-beyond-52146_. Let's call this name _[APP_NAME]_ +3. Add environment variables that Django needs to read: + 1. DJANGO_ENVIRONMENT: + ``` + heroku config:set DJANGO_ENVIRONMENT=production + ``` + 2. DJANGO_SECRET_KEY: + You can create a safe secret key [using this site](https://djecrety.ir/) + ``` + heroku config:set DJANGO_SECRET_KEY=[secret_key] + ``` + 3. DJANGO_DEBUG: + ``` + heroku config:set DJANGO_DEBUG=False + ``` +4. Set the stack to Docker containers using the app's name + ``` + heroku stack:setcontainer -a [APP_NAME] + ``` +5. Create a managed postgresql database on Heroku + ``` + heroku addons:create heroku-postgresql:hobby-dev -a [APP_NAME] + ``` +6. Create a heroku remote repository and push changes to it + ``` + heroku git:remote -a [APP_NAME] + git push heroku main + ``` +7. Migrate Database and create superuser + ``` + heroku run python manage.py migrate + heroku run python manage.py createsuperuser + ``` +8. After deployment, check that the site's [security audit shows no warnings](https://djcheckup.com/) + +### Consecutive deployments to production +Deploy by pushing to Heroku git repository: +``` +git push heroku main +``` + + +%package -n python3-hybrid-django-react +Summary: Django starter project template. Dockerized Django serving a static React app +Provides: python-hybrid-django-react +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-hybrid-django-react +## Starter project template +# 🤠⚛️ Dockerized hybrid Django React app +Starter project template using Docker to build a Django app that serves React apps statically (as JavaScript files) + +## Tech stack + - Django (with Rest framework, PostgreSQL, SMTP gmail backend, whitenoise, etc.) + - React (bundled with webpack and transpiled with babel) + - Docker + - Deployment to Heroku + +## Prerequisites + - Docker + - pip, poetry, pyenv or a similar tool to access [pypi](https://pypi.org/) + +## Installation +Install with the following command +``` +pip install hybrid-django-react +``` + +## Usage +Run the scripts with the following command: +``` +create-django-react-app +``` + +You will be prompted for some information like project name, email, etc. This data is needed to change the configuration files accordingly + +After the script has run, you don't need this tool anymore 😀 + +Simply start the docker container to start working: +``` +docker-compose up -d +``` + +You can then work as usual on your Django project. + +The entry point of the React render can be edited from the file `frontend/index.js` + +## Debugging with Docker and VSCode + +Support for debugging remotely with VSCode is supported out-of-the-box. + +To debug with Docker: + +1. Run your Docker containers as usual: `docker-compose up -d --build` + +3. Start the debug session from VS Code for the `[django:docker] runserver` configuration (either from the Debugger menu or with `F5`) + + - Logs will redirect to your integrated terminal as well. + +4. Set some breakpoints in functions or methods executed when needed. Usually it's Model methods or View functions + +## Adding external libraries + +It's better to install external libraries from from Docker directly + +### Python libraries: + - Production libraries + ``` + docker-compose exec web poetry add [pip_package] + ``` + - Development libraries + ``` + docker-compose exec web poetry add [pip_package] --dev + ``` +### JavaScript libraries: + - Production libraries + ``` + docker-compose exec web npm install [npm_package] + ``` + - Development libraries + ``` + docker-compose exec web npm install -D [npm_package] + ``` + +## Deploy to Heroku +### First setup +1. [Create an account](https://www.heroku.com) and [install Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) +2. Create a new app on Heroku + ``` + heroku create + ``` + Your app will get a randomly generated name, like _lazy-beyond-52146_. Let's call this name _[APP_NAME]_ +3. Add environment variables that Django needs to read: + 1. DJANGO_ENVIRONMENT: + ``` + heroku config:set DJANGO_ENVIRONMENT=production + ``` + 2. DJANGO_SECRET_KEY: + You can create a safe secret key [using this site](https://djecrety.ir/) + ``` + heroku config:set DJANGO_SECRET_KEY=[secret_key] + ``` + 3. DJANGO_DEBUG: + ``` + heroku config:set DJANGO_DEBUG=False + ``` +4. Set the stack to Docker containers using the app's name + ``` + heroku stack:setcontainer -a [APP_NAME] + ``` +5. Create a managed postgresql database on Heroku + ``` + heroku addons:create heroku-postgresql:hobby-dev -a [APP_NAME] + ``` +6. Create a heroku remote repository and push changes to it + ``` + heroku git:remote -a [APP_NAME] + git push heroku main + ``` +7. Migrate Database and create superuser + ``` + heroku run python manage.py migrate + heroku run python manage.py createsuperuser + ``` +8. After deployment, check that the site's [security audit shows no warnings](https://djcheckup.com/) + +### Consecutive deployments to production +Deploy by pushing to Heroku git repository: +``` +git push heroku main +``` + + +%package help +Summary: Development documents and examples for hybrid-django-react +Provides: python3-hybrid-django-react-doc +%description help +## Starter project template +# 🤠⚛️ Dockerized hybrid Django React app +Starter project template using Docker to build a Django app that serves React apps statically (as JavaScript files) + +## Tech stack + - Django (with Rest framework, PostgreSQL, SMTP gmail backend, whitenoise, etc.) + - React (bundled with webpack and transpiled with babel) + - Docker + - Deployment to Heroku + +## Prerequisites + - Docker + - pip, poetry, pyenv or a similar tool to access [pypi](https://pypi.org/) + +## Installation +Install with the following command +``` +pip install hybrid-django-react +``` + +## Usage +Run the scripts with the following command: +``` +create-django-react-app +``` + +You will be prompted for some information like project name, email, etc. This data is needed to change the configuration files accordingly + +After the script has run, you don't need this tool anymore 😀 + +Simply start the docker container to start working: +``` +docker-compose up -d +``` + +You can then work as usual on your Django project. + +The entry point of the React render can be edited from the file `frontend/index.js` + +## Debugging with Docker and VSCode + +Support for debugging remotely with VSCode is supported out-of-the-box. + +To debug with Docker: + +1. Run your Docker containers as usual: `docker-compose up -d --build` + +3. Start the debug session from VS Code for the `[django:docker] runserver` configuration (either from the Debugger menu or with `F5`) + + - Logs will redirect to your integrated terminal as well. + +4. Set some breakpoints in functions or methods executed when needed. Usually it's Model methods or View functions + +## Adding external libraries + +It's better to install external libraries from from Docker directly + +### Python libraries: + - Production libraries + ``` + docker-compose exec web poetry add [pip_package] + ``` + - Development libraries + ``` + docker-compose exec web poetry add [pip_package] --dev + ``` +### JavaScript libraries: + - Production libraries + ``` + docker-compose exec web npm install [npm_package] + ``` + - Development libraries + ``` + docker-compose exec web npm install -D [npm_package] + ``` + +## Deploy to Heroku +### First setup +1. [Create an account](https://www.heroku.com) and [install Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) +2. Create a new app on Heroku + ``` + heroku create + ``` + Your app will get a randomly generated name, like _lazy-beyond-52146_. Let's call this name _[APP_NAME]_ +3. Add environment variables that Django needs to read: + 1. DJANGO_ENVIRONMENT: + ``` + heroku config:set DJANGO_ENVIRONMENT=production + ``` + 2. DJANGO_SECRET_KEY: + You can create a safe secret key [using this site](https://djecrety.ir/) + ``` + heroku config:set DJANGO_SECRET_KEY=[secret_key] + ``` + 3. DJANGO_DEBUG: + ``` + heroku config:set DJANGO_DEBUG=False + ``` +4. Set the stack to Docker containers using the app's name + ``` + heroku stack:setcontainer -a [APP_NAME] + ``` +5. Create a managed postgresql database on Heroku + ``` + heroku addons:create heroku-postgresql:hobby-dev -a [APP_NAME] + ``` +6. Create a heroku remote repository and push changes to it + ``` + heroku git:remote -a [APP_NAME] + git push heroku main + ``` +7. Migrate Database and create superuser + ``` + heroku run python manage.py migrate + heroku run python manage.py createsuperuser + ``` +8. After deployment, check that the site's [security audit shows no warnings](https://djcheckup.com/) + +### Consecutive deployments to production +Deploy by pushing to Heroku git repository: +``` +git push heroku main +``` + + +%prep +%autosetup -n hybrid-django-react-0.2.2 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-hybrid-django-react -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 0.2.2-1 +- Package Spec generated |