{"id":27245432,"url":"https://github.com/yuu-eguci/django-nuxt-gemini","last_synced_at":"2026-04-13T13:02:53.050Z","repository":{"id":186281590,"uuid":"674571959","full_name":"yuu-eguci/django-nuxt-gemini","owner":"yuu-eguci","description":"✌🏽✌🏽 🐍 🐳 🇳 Python 3.10 + Django v4 + Yarn + Nuxt v2 + Nginx + Docker + GitHub Actions + Ruff + CI/CD | Nuxt.js も使いてーし、 Django も使いてーけど、サーバはふたつも使いたくねーから、 Nginx を使って Django と Nuxt.js を同ドメインで配信しよーぜ。あと Docker は当然使うぜ。","archived":false,"fork":false,"pushed_at":"2025-03-05T00:42:13.000Z","size":1392,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-23T05:51:31.347Z","etag":null,"topics":["django4","docker","github-actions","nginx","nuxt2","python310","ruff","yarn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yuu-eguci.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-08-04T09:10:45.000Z","updated_at":"2025-03-05T00:42:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"7df63a1c-b81d-43cc-82f0-4d2555755cb4","html_url":"https://github.com/yuu-eguci/django-nuxt-gemini","commit_stats":null,"previous_names":["yuu-eguci/django-nuxt-gemini"],"tags_count":2,"template":true,"template_full_name":null,"purl":"pkg:github/yuu-eguci/django-nuxt-gemini","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuu-eguci%2Fdjango-nuxt-gemini","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuu-eguci%2Fdjango-nuxt-gemini/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuu-eguci%2Fdjango-nuxt-gemini/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuu-eguci%2Fdjango-nuxt-gemini/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuu-eguci","download_url":"https://codeload.github.com/yuu-eguci/django-nuxt-gemini/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuu-eguci%2Fdjango-nuxt-gemini/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31753551,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T09:16:15.125Z","status":"ssl_error","status_checked_at":"2026-04-13T09:16:05.023Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["django4","docker","github-actions","nginx","nuxt2","python310","ruff","yarn"],"created_at":"2025-04-10T21:19:09.125Z","updated_at":"2026-04-13T13:02:53.026Z","avatar_url":"https://github.com/yuu-eguci.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"django-nuxt-gemini ♊\n===\n\nTODO: 開発環境で、 3001 -\u003e 8001 するところまでは完成済み。\n      8081 のみで動かすところが未完成。具体的には django 側に本番用の settings が必要。\n\n✌🏽✌🏽 🐍 🐳 🇳 Python 3.10 + Django v4 + Yarn + Nuxt v2 + Nginx + Docker + GitHub Actions + Ruff + CI/CD | Nuxt.js も使いてーし、 Django も使いてーけど、サーバはふたつも使いたくねーから、 Nginx を使って Django と Nuxt.js を同ドメインで配信しよーぜ。あと Docker は当然使うぜ。\n\n- python + django + yarn + nuxt + nginx なんつー container を用意して、\n- 開発環境では runserver (8000 -\u003e 8081) と yarn dev (3000 -\u003e 3001) で開発して、\n- 実働環境では\n    - nuxt は yarn generate で静的サイトにして、 nginx (8080/ -\u003e 8081) で配信して、\n    - django は nginx と gunicorn (8081/api/ -\u003e 8080 -\u003e 8000) で配信するよ!\n\n![](docs/(2023-08-05)overall-view.png)\n\n## コイツのいいところ\n\n- Docker 環境 + Django + Nuxt.js (frontend) + MySQL がひとつのリポジトリに詰まっててシンプルだよ。\n    - まあいいことばかりじゃないけど。\n- up で3つ一気に立ち上がるよ。\n\nDjango エリアのいいところ\n\n- 開発環境用、本番環境用の settings が分かれてるよ。\n- 当然 Pipenv で管理できてるよ。\n- コンソールと、 ./logs/ へのロギングができてるよ。ロギングの日時は UTC と JST を選べる。\n- ユニットテストの基礎もちゃんとあるよ。\n- ひさしぶりに来て、 \"view どんなふうに書くんだっけ?\" ってなったときのため views に view のベースを書いてるよ。\n    - 最近、 async の view も足しといたよ。ただ動かすにはこれ↓が必要かも\n    - uvicorn (asgi サーバ) を pip install\n    - gunicorn が内蔵の wsgi サーバのみならず uvicorn を動かせるように設定する\n    - そうすると gunicorn が uvicorn を worker として動かして、\n    - uvicorn は asgi サーバとして django を配信してくれる!\n- GitHub Actions で ruff, test がちゃんと走るよ。\n- プロジェクト内部のモジュールをインポートするときは、つねに相対インポートを使ってる (3rd party との区別のため) よ。\n\nNuxt.js エリアのいいところ\n\n- GitHub Actions で eslint, test がちゃんと走るよ。\n\nNginx エリアのいいところ\n\nいいことばかりじゃないところ\n\n- 1アプリケーションにつき1 docker container を使うと、 VSCode 開発のときに devcontainer をキレイに使えたりして利点がある。ひとつの container に複数アプリケーションが入っていると、その利点を利用することが不可。\n\n## runserver と yarn dev で起動するところまで\n\n```bash\n# NOTE: (2025-03-04) 久しぶりに clone してみたけど、マジで\n#       Create containers -\u003e Django のほう\n#       をサッサと打つだけで開始できた。イイぞ。\n\n# Create containers\ncp ./local.env ./.env; docker compose up -d; docker compose exec webapp-service sh\n\n# Get into webapp-service\n# NOTE: It's a good practice to have separate terminals for Django and Nuxt.js for easier debugging and log tracking.\ndocker compose exec webapp-service sh\n# Check↓\npython -V\n# --\u003e Python 3.10.12\npipenv --version\n# --\u003e pipenv, version 2023.7.23\nyarn -v\n# --\u003e 1.22.19\ncreate-nuxt-app -v\n# --\u003e create-nuxt-app/5.0.0 linux-x64 node-v18.17.0\n(cd ./frontend-nuxt; yarn list nuxt)\n# --\u003e └─ nuxt@2.17.1\n# NOTE: warning が出るけど、それは完全一致検索を欠く yarn list が悪い。\n\n# Django のほう。\n# NOTE: PIPENV_VENV_IN_PROJECT は env で設定してある。\npipenv sync --dev\npipenv run python manage.py migrate\npipenv run python manage.py runserver 0.0.0.0:8000\n# --\u003e http://localhost:8001/ でアクセス。\n\n# Nuxt.js のほう。\n(cd ./frontend-nuxt; yarn install)\n(cd ./frontend-nuxt; yarn dev --hostname 0.0.0.0)\n# --\u003e http://localhost:3001/ でアクセス。\n```\n\n```bash\n# Test commands.\ntime pipenv run ruff check .\ntime pipenv run python manage.py test --failfast --parallel --settings=config.settings_test\n\n(cd ./frontend-nuxt; time yarn test .)\n(cd ./frontend-nuxt; time yarn lint)\n```\n\n## 【Deprecated】 Gemini の更新を派生リポジトリへ取り込む手順\n\nこのプロジェクトは取りやめた。たぶんアホな試みだった。\n\n```bash\n# 派生リポジトリ側で行う↓\n\n# django-nuxt-gemini を upstream-gemini branch として登録する。\ngit remote add upstream-gemini git@github.com:yuu-eguci/django-nuxt-gemini.git\n\n# このリポジトリの origin はもちろん自分、 upstream-gemini は Gemini という設定になっていることを確認。\ngit remote -v\n# origin  https://github.com/user/派生リポジトリ.git (fetch)\n# origin  https://github.com/user/派生リポジトリ.git (push)\n# upstream-gemini git@github.com:yuu-eguci/django-nuxt-gemini.git (fetch)\n# upstream-gemini git@github.com:yuu-eguci/django-nuxt-gemini.git (push)\n# 間違えちゃったら削除↓\ngit remote rm upstream-gemini\n\n# Gemini の現状を取得。\ngit fetch upstream-gemini\n\n# Gemini の main ブランチへ切り替える。\n# この状態だと commit 履歴とまったく合ってないので 'detached HEAD' state になる。\ngit checkout upstream-gemini/main\n\n# 好きなところまで reset で戻る。 (前回のバージョンを指定するのがよさげ)\ngit reset --mixed HEAD^\n\n# Changes を、そのまま main へコミットしてもいいし、 update-from-upstream ブランチを作ってマージしてもいいし。\n# ➕ Update from django-nuxt-gemini upstream\n```\n\n## Nuxt.js を静的サイトとして nginx で配信する\n\nここまで出来たよ!\n\n![](docs/(2023-08-04)8081-8080-8000-system.png)\n\n- `runserver` のとき: Container の外側 (8001) -\u003e Django (8000) という流れ。\n- `nginx` のとき: Container の外側 (8081) -\u003e Nginx (8080) -\u003e Gunicorn (8000) という流れになるよ。\n\n## VSCode を使っているなら settings.json にコレ書いとくとヨシ\n\n\"container 内仮想環境にある python modules の中身へ F12 でジャンプできない\" 問題をこれで回避できる。\n\n```json\n{\n    \"python.autoComplete.extraPaths\": [\"${workspaceFolder}/webapp/.venv/lib/python*/site-packages\"]\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuu-eguci%2Fdjango-nuxt-gemini","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuu-eguci%2Fdjango-nuxt-gemini","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuu-eguci%2Fdjango-nuxt-gemini/lists"}