{"id":14989822,"url":"https://github.com/dokugaku-engineer/dokugaku-engineer","last_synced_at":"2025-04-09T08:12:50.124Z","repository":{"id":38147577,"uuid":"269288112","full_name":"dokugaku-engineer/dokugaku-engineer","owner":"dokugaku-engineer","description":"独学エンジニア","archived":false,"fork":false,"pushed_at":"2024-02-22T07:02:16.000Z","size":22384,"stargazers_count":231,"open_issues_count":17,"forks_count":28,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-02T05:09:51.238Z","etag":null,"topics":["auth0","laravel","nuxt","php","vue"],"latest_commit_sha":null,"homepage":"https://dokugaku-engineer.com/","language":"Vue","has_issues":true,"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/dokugaku-engineer.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-04T07:18:53.000Z","updated_at":"2025-03-23T11:52:30.000Z","dependencies_parsed_at":"2024-10-31T02:03:43.430Z","dependency_job_id":"139c8306-a0c3-4e42-9a13-c5b564a1dd1a","html_url":"https://github.com/dokugaku-engineer/dokugaku-engineer","commit_stats":{"total_commits":611,"total_committers":7,"mean_commits":87.28571428571429,"dds":0.04255319148936165,"last_synced_commit":"4b6c4d09dc3327e7aceb959e1916415211879ad0"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dokugaku-engineer%2Fdokugaku-engineer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dokugaku-engineer%2Fdokugaku-engineer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dokugaku-engineer%2Fdokugaku-engineer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dokugaku-engineer%2Fdokugaku-engineer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dokugaku-engineer","download_url":"https://codeload.github.com/dokugaku-engineer/dokugaku-engineer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247999864,"owners_count":21031046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["auth0","laravel","nuxt","php","vue"],"created_at":"2024-09-24T14:18:58.421Z","updated_at":"2025-04-09T08:12:50.105Z","avatar_url":"https://github.com/dokugaku-engineer.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/dokugaku-engineer/dokugaku-engineer/images/logo_long.png\"\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.styleci.io/repos/269288112?branch=master\"\u003e\u003cimg src=\"https://github.styleci.io/repos/269288112/shield?branch=master\" alt=\"StyleCI\"\u003e\u003c/a\u003e\n\u003ca href=\"https://codebuild.ap-northeast-1.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiUU80N3IraHgxOFVnKzVlZ2h1Q3Z3QkZBalA0Q0lJakVtUmVsK2J3ZCtMSFRHdUgySlZSaFAvZnBuTk50QWhSR2F2TUgzUU5wNFIzQUplTTJRM1VGRUwwPSIsIml2UGFyYW1ldGVyU3BlYyI6InpyVUN4WFZnZTE2TndmZjYiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D\u0026branch=master\"\u003e\u003cimg src=\"https://codebuild.ap-northeast-1.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiUU80N3IraHgxOFVnKzVlZ2h1Q3Z3QkZBalA0Q0lJakVtUmVsK2J3ZCtMSFRHdUgySlZSaFAvZnBuTk50QWhSR2F2TUgzUU5wNFIzQUplTTJRM1VGRUwwPSIsIml2UGFyYW1ldGVyU3BlYyI6InpyVUN4WFZnZTE2TndmZjYiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D\u0026branch=master\" alt=\"Client CI\"\u003e\u003c/a\u003e\n\u003ca href=\"https://codebuild.ap-northeast-1.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiQ29QV2ZDTDFocjZLL3h2bHQ4cFNCT3RQOXplTStwb0dqYkVpM3lhTENkMTJ0Q0ZRZEFKNUtqUmFrdW9MQnNubC91c2YrR0E5cGhnL2JtMzNZanRJZE1nPSIsIml2UGFyYW1ldGVyU3BlYyI6IjBXdUkxdlhKSm42QWloWlAiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D\u0026branch=master\"\u003e\u003cimg src=\"https://codebuild.ap-northeast-1.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiQ29QV2ZDTDFocjZLL3h2bHQ4cFNCT3RQOXplTStwb0dqYkVpM3lhTENkMTJ0Q0ZRZEFKNUtqUmFrdW9MQnNubC91c2YrR0E5cGhnL2JtMzNZanRJZE1nPSIsIml2UGFyYW1ldGVyU3BlYyI6IjBXdUkxdlhKSm42QWloWlAiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D\u0026branch=master\" alt=\"Api CI\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n[独学エンジニア](https://dokugaku-engineer.com/)はプログラミング初学者が自走できるエンジニアになるためのプログラミング学習サービスです。\n\n## 概要\n\n独学エンジニアはプログラミング初学者のためのオンラインプログラミング学習サービスです。Webベースのアプリケーションで、クライアントサイドはNuxt.jsで、APIはLaravelで書かれています。\n\n### 目的\n\n独学エンジニアは、プログラミング初学者が自走できるエンジニアになることを目標としています。エンジニアとして就職・転職できるようになるのはもちろん、その後の実務で、未知の課題に出会っても自分で情報収集し解決できる実践的スキルの習得を目指します。\n\nプログラミング学習には本やWebページなど、多くの教材があります。しかし実務で自走できるようになるための情報はまとまっていません。また、実務で実際にあるような課題に取り組む機会もありません。独学エンジニアでは実務で必要なスキルをロードマップとして整備し、また実践的な演習を行うことで、実務レベルのスキルを習得します。\n\n### 特徴\n\n* 動画教材の閲覧\n* 動画教材のインポート\n* アカウント情報の管理\n* REST API\n* Auth0を利用したユーザー認証\n* ソーシャルログイン\n* CI/CD\n\n## 開発するには\n\n### アプリケーションの起動\n\n以下のコマンドを実行してアプリケーションを起動します。\n\n```bash\n# 環境変数の設定\ncp docker/db/db-variables.development.env docker/db/db-variables.env\ncp api/.env.dev api/.env\ncp client/.env.dev client/.env\n\n# Dockerの起動\ndocker-compose up -d --build\n\n# APIに必要なライブラリをインストール\ndocker-compose exec api composer install\n\n# Clientに必要なライブラリをインストール\ndocker-compose exec client npm install --no-optional\n\n# データベースのマイグレーション\ndocker-compose exec api php artisan migrate\n\n# レクチャー関連のデータのインポート\ndocker-compose exec api php artisan import:lecture-csv\n```\n\nこれでサイトにアクセスできます。\n\n[http://localhost:3333/](http://localhost:3333/)\n\n### ユーザー認証の設定\n\nAuth0を利用してユーザー認証を管理しています。開発にあたって、Auht0の登録、設定を行います。\n\n#### 1. Auth0のアカウントの開設\n\nAuth0にサインアップします。\n\n#### 2. テナントの作成\n\nCreate tenant をクリックし、テナントを作成します。\n\n* Tenant Domain：任意の名前\n* Region：US\n\n#### 3. 言語の設定\n\nSettings \u003e General をクリックし、言語を設定します。\n\n* Default Language で Japanese(ja) を選択\n* Supported Languages で Japanese(ja), English(en) をチェック\n\n#### 4. APIの作成\n\nAPIs \u003e CREATE API をクリックし、APIを作成します。\n\n* Name：Dokugaku Engineer API\n* Identifier：http://localhost:3333/api\n* Signing Algorithm：RS256\n\n#### 5. アプリケーションの作成\n\nApplications \u003e CREATE APPLICATION をクリックし、アプリケーションを作成します。\n\n* Name：Dokugaku Engineer\n* application type：Single Page Web Applications\n\nApplications \u003e Dokugaku Engineer \u003e Settings をクリックし、アプリケーションの設定を行います。\n\n* Allowed Callback URLs：http://localhost:3333,http://localhost:3333/course/serverside,http://localhost:3333/registration\n* Allowed Logout URLs：http://localhost:3333\n* Allowed Web Origins：http://localhost:3333\n\n#### 6. ルールの作成\n\nトークンのスコープを検証するルールを作成します。Rules \u003e CREATE RULE \u003e Empty rule をクリックします。\n\n* Name：Access Token Scopes\n* Script：Auth0/rules/access_token_scopes.js のコードを貼り付ける\n\nユーザーデータをトークンに追加するルールを作成します。Rules \u003e CREATE RULE \u003e Empty rule をクリックします。\n\n* Name：Add user data to tokens\n* Script：Auth0/rules/add_userdata_to_tokens.js のコードを貼り付ける\n\n#### 7. ソーシャルコネクトの対応\n\nConnections \u003e Social をクリックする。\nGoogleのチェックを外し、GitHubとTwitterをチェックする。\n\nGitHubとTwitterの設定についてはAuth0のドキュメントを参考にする。\n\n* [Connect your app to GitHub](https://auth0.com/docs/connections/social/github)\n* [Connect Your App to Twitter](https://auth0.com/docs/connections/social/twitter)\n\n#### 8. ユニバーサルログインの使用\n\nUniversal Login \u003e Settings をクリックして、新ユニバーサルログインページを使用するように設定する。\n\n* Experience：New\n\n#### 9. 環境変数の設定\n\napi/.env に下記を設定する。\n\n```api/.env\nAUTH0_AUDIENCE=http://localhost:3333/api\nAUTH0_DOMAIN=${テナント名}.auth0.com\nAUTH0_MANAGEMENT_API_AUDIENCE=${Auth0 Management APIのIdentifier}\nAUTH0_MANAGEMENT_API_CLIENT_ID=${Auth0 Management APIがAUTHORIZEDしているApplicationのClient ID}\nAUTH0_MANAGEMENT_API_CLIENT_SECRET=${Auth0 Management APIがAUTHORIZEDしているApplicationのClient Secret}\n}\nAUTH0_NAMESPACE=https://dokugaku-engineer.com/\n```\n\nclient/.env に下記を設定する。\n\n```client/.env\nAUTH0_AUDIENCE=http://localhost:3333/api\nAUTH0_CLIENT_ID=${作成したApplicatiopnのClient ID}\nAUTH0_DOMAIN=${テナント名}.auth0.com\nAUTH0_MANAGEMENT_API_AUDIENCE=${Auth0 Management APIのIdentifier}\nAUTH0_MANAGEMENT_API_CLIENT_ID=${Auth0 Management APIがAUTHORIZEDしているApplicationのClient ID}\nAUTH0_MANAGEMENT_API_CLIENT_SECRET=${Auth0 Management APIがAUTHORIZEDしているApplicationのClient Secret}\nAUTH0_NAMESPACE=https://dokugaku-engineer.com/\n```\n\n## Mission, Vision, Value\n\n### Mission\n\n* 本気でキャリアを変えたい人の力になる\n\n### Vision\n\n* プログラミング初学者が実務で自走できるエンジニアになれる道を整備する\n\n### Value\n\n* 高品質な教材のみを提供しよう\n* 人の可能性を信じよう\n\n### なぜオープンソースなのか\n\nプログラミングを習得する上で、実際に運用しているWebサービスのソースコードを読むことは大変勉強になります。一方で、運用しているWebサービスのソースコードは公開してないものが多く、プログラミング初学者が参考にしやすいものは少ないです。そこで独学エンジニアではソースコードを公開し、プログラミング初学者が実際に運用中のWebサービスのソースコードに触れる機会を提供することで、プログラミング初学者の学習の参考になればと願っています。\n\nまた、オープンソースにすることで多くの開発者の力でサービスをより良いものにしていければと思っています。プログラミング初学者がオープンソースにコミットするきっかけになることも期待しています。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdokugaku-engineer%2Fdokugaku-engineer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdokugaku-engineer%2Fdokugaku-engineer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdokugaku-engineer%2Fdokugaku-engineer/lists"}