├── .DS_Store ├── .gitignore ├── 2023-12-29 ├── README.md └── trying-htmx │ ├── .env.sample │ ├── .eslintrc │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── jest.config.js │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── api │ │ ├── emojis.ts │ │ └── index.ts │ ├── app.ts │ ├── index.ts │ ├── interfaces │ │ ├── ErrorResponse.ts │ │ └── MessageResponse.ts │ ├── middlewares.ts │ ├── routes │ │ └── search.ts │ └── views │ │ ├── index.hbs │ │ └── partials │ │ ├── error.hbs │ │ ├── good-job.hbs │ │ └── search-results.hbs │ ├── test │ ├── api.test.ts │ └── app.test.ts │ └── tsconfig.json ├── 2024-01-05 ├── README.md └── learn-rust │ ├── create-express-api │ ├── .gitignore │ ├── Cargo.lock │ ├── Cargo.toml │ └── src │ │ ├── error_messages.rs │ │ ├── hello-world.rs │ │ └── main.rs │ └── hello-world │ └── index.rs ├── 2024-01-12 ├── .gitignore ├── README.md ├── chirper │ ├── .editorconfig │ ├── .env.example │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── app │ │ ├── Console │ │ │ └── Kernel.php │ │ ├── Events │ │ │ └── ChirpCreated.php │ │ ├── Exceptions │ │ │ └── Handler.php │ │ ├── Http │ │ │ ├── Controllers │ │ │ │ ├── Auth │ │ │ │ │ ├── AuthenticatedSessionController.php │ │ │ │ │ ├── ConfirmablePasswordController.php │ │ │ │ │ ├── EmailVerificationNotificationController.php │ │ │ │ │ ├── EmailVerificationPromptController.php │ │ │ │ │ ├── NewPasswordController.php │ │ │ │ │ ├── PasswordController.php │ │ │ │ │ ├── PasswordResetLinkController.php │ │ │ │ │ ├── RegisteredUserController.php │ │ │ │ │ └── VerifyEmailController.php │ │ │ │ ├── ChirpController.php │ │ │ │ ├── Controller.php │ │ │ │ └── ProfileController.php │ │ │ ├── Kernel.php │ │ │ ├── Middleware │ │ │ │ ├── Authenticate.php │ │ │ │ ├── EncryptCookies.php │ │ │ │ ├── PreventRequestsDuringMaintenance.php │ │ │ │ ├── RedirectIfAuthenticated.php │ │ │ │ ├── TrimStrings.php │ │ │ │ ├── TrustHosts.php │ │ │ │ ├── TrustProxies.php │ │ │ │ ├── ValidateSignature.php │ │ │ │ └── VerifyCsrfToken.php │ │ │ └── Requests │ │ │ │ ├── Auth │ │ │ │ └── LoginRequest.php │ │ │ │ └── ProfileUpdateRequest.php │ │ ├── Listeners │ │ │ └── SendChirpCreatedNotifications.php │ │ ├── Models │ │ │ ├── Chirp.php │ │ │ └── User.php │ │ ├── Notifications │ │ │ └── NewChirp.php │ │ ├── Policies │ │ │ └── ChirpPolicy.php │ │ ├── Providers │ │ │ ├── AppServiceProvider.php │ │ │ ├── AuthServiceProvider.php │ │ │ ├── BroadcastServiceProvider.php │ │ │ ├── EventServiceProvider.php │ │ │ └── RouteServiceProvider.php │ │ └── View │ │ │ └── Components │ │ │ ├── AppLayout.php │ │ │ └── GuestLayout.php │ ├── artisan │ ├── bootstrap │ │ ├── app.php │ │ └── cache │ │ │ └── .gitignore │ ├── composer.json │ ├── composer.lock │ ├── config │ │ ├── app.php │ │ ├── auth.php │ │ ├── broadcasting.php │ │ ├── cache.php │ │ ├── cors.php │ │ ├── database.php │ │ ├── filesystems.php │ │ ├── hashing.php │ │ ├── logging.php │ │ ├── mail.php │ │ ├── queue.php │ │ ├── sanctum.php │ │ ├── services.php │ │ ├── session.php │ │ └── view.php │ ├── database │ │ ├── .gitignore │ │ ├── factories │ │ │ └── UserFactory.php │ │ ├── migrations │ │ │ ├── 2014_10_12_000000_create_users_table.php │ │ │ ├── 2014_10_12_100000_create_password_reset_tokens_table.php │ │ │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ │ │ ├── 2019_12_14_000001_create_personal_access_tokens_table.php │ │ │ └── 2024_01_12_203238_create_chirps_table.php │ │ └── seeders │ │ │ └── DatabaseSeeder.php │ ├── package-lock.json │ ├── package.json │ ├── phpunit.xml │ ├── postcss.config.js │ ├── public │ │ ├── .htaccess │ │ ├── favicon.ico │ │ ├── index.php │ │ └── robots.txt │ ├── resources │ │ ├── css │ │ │ └── app.css │ │ ├── js │ │ │ ├── app.js │ │ │ └── bootstrap.js │ │ └── views │ │ │ ├── auth │ │ │ ├── confirm-password.blade.php │ │ │ ├── forgot-password.blade.php │ │ │ ├── login.blade.php │ │ │ ├── register.blade.php │ │ │ ├── reset-password.blade.php │ │ │ └── verify-email.blade.php │ │ │ ├── banana.blade.php │ │ │ ├── chirps │ │ │ ├── edit.blade.php │ │ │ └── index.blade.php │ │ │ ├── components │ │ │ ├── application-logo.blade.php │ │ │ ├── auth-session-status.blade.php │ │ │ ├── danger-button.blade.php │ │ │ ├── dropdown-link.blade.php │ │ │ ├── dropdown.blade.php │ │ │ ├── input-error.blade.php │ │ │ ├── input-label.blade.php │ │ │ ├── modal.blade.php │ │ │ ├── nav-link.blade.php │ │ │ ├── primary-button.blade.php │ │ │ ├── responsive-nav-link.blade.php │ │ │ ├── secondary-button.blade.php │ │ │ └── text-input.blade.php │ │ │ ├── dashboard.blade.php │ │ │ ├── layouts │ │ │ ├── app.blade.php │ │ │ ├── guest.blade.php │ │ │ └── navigation.blade.php │ │ │ ├── profile │ │ │ ├── edit.blade.php │ │ │ └── partials │ │ │ │ ├── delete-user-form.blade.php │ │ │ │ ├── update-password-form.blade.php │ │ │ │ └── update-profile-information-form.blade.php │ │ │ └── welcome.blade.php │ ├── routes │ │ ├── api.php │ │ ├── auth.php │ │ ├── channels.php │ │ ├── console.php │ │ └── web.php │ ├── storage │ │ ├── app │ │ │ ├── .gitignore │ │ │ └── public │ │ │ │ └── .gitignore │ │ ├── debugbar │ │ │ └── .gitignore │ │ └── framework │ │ │ ├── .gitignore │ │ │ ├── cache │ │ │ ├── .gitignore │ │ │ └── data │ │ │ │ └── .gitignore │ │ │ ├── sessions │ │ │ └── .gitignore │ │ │ ├── testing │ │ │ └── .gitignore │ │ │ └── views │ │ │ └── .gitignore │ ├── tailwind.config.js │ ├── tests │ │ ├── CreatesApplication.php │ │ ├── Feature │ │ │ ├── Auth │ │ │ │ ├── AuthenticationTest.php │ │ │ │ ├── EmailVerificationTest.php │ │ │ │ ├── PasswordConfirmationTest.php │ │ │ │ ├── PasswordResetTest.php │ │ │ │ ├── PasswordUpdateTest.php │ │ │ │ └── RegistrationTest.php │ │ │ ├── ExampleTest.php │ │ │ └── ProfileTest.php │ │ ├── TestCase.php │ │ └── Unit │ │ │ └── ExampleTest.php │ └── vite.config.js ├── composer.json ├── composer.lock ├── example-app │ ├── .editorconfig │ ├── .env.example │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── app │ │ ├── Console │ │ │ └── Kernel.php │ │ ├── Exceptions │ │ │ └── Handler.php │ │ ├── Http │ │ │ ├── Controllers │ │ │ │ └── Controller.php │ │ │ ├── Kernel.php │ │ │ └── Middleware │ │ │ │ ├── Authenticate.php │ │ │ │ ├── EncryptCookies.php │ │ │ │ ├── PreventRequestsDuringMaintenance.php │ │ │ │ ├── RedirectIfAuthenticated.php │ │ │ │ ├── TrimStrings.php │ │ │ │ ├── TrustHosts.php │ │ │ │ ├── TrustProxies.php │ │ │ │ ├── ValidateSignature.php │ │ │ │ └── VerifyCsrfToken.php │ │ ├── Models │ │ │ └── User.php │ │ └── Providers │ │ │ ├── AppServiceProvider.php │ │ │ ├── AuthServiceProvider.php │ │ │ ├── BroadcastServiceProvider.php │ │ │ ├── EventServiceProvider.php │ │ │ └── RouteServiceProvider.php │ ├── artisan │ ├── bootstrap │ │ ├── app.php │ │ └── cache │ │ │ └── .gitignore │ ├── composer.json │ ├── composer.lock │ ├── config │ │ ├── app.php │ │ ├── auth.php │ │ ├── broadcasting.php │ │ ├── cache.php │ │ ├── cors.php │ │ ├── database.php │ │ ├── filesystems.php │ │ ├── hashing.php │ │ ├── logging.php │ │ ├── mail.php │ │ ├── queue.php │ │ ├── sanctum.php │ │ ├── services.php │ │ ├── session.php │ │ └── view.php │ ├── database │ │ ├── .gitignore │ │ ├── factories │ │ │ └── UserFactory.php │ │ ├── migrations │ │ │ ├── 2014_10_12_000000_create_users_table.php │ │ │ ├── 2014_10_12_100000_create_password_reset_tokens_table.php │ │ │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ │ │ └── 2019_12_14_000001_create_personal_access_tokens_table.php │ │ └── seeders │ │ │ └── DatabaseSeeder.php │ ├── docker-compose.yml │ ├── package.json │ ├── phpunit.xml │ ├── public │ │ ├── .htaccess │ │ ├── favicon.ico │ │ ├── index.php │ │ └── robots.txt │ ├── resources │ │ ├── css │ │ │ └── app.css │ │ ├── js │ │ │ ├── app.js │ │ │ └── bootstrap.js │ │ └── views │ │ │ └── welcome.blade.php │ ├── routes │ │ ├── api.php │ │ ├── channels.php │ │ ├── console.php │ │ └── web.php │ ├── storage │ │ ├── app │ │ │ ├── .gitignore │ │ │ └── public │ │ │ │ └── .gitignore │ │ └── framework │ │ │ ├── .gitignore │ │ │ ├── cache │ │ │ ├── .gitignore │ │ │ └── data │ │ │ │ └── .gitignore │ │ │ ├── sessions │ │ │ └── .gitignore │ │ │ ├── testing │ │ │ └── .gitignore │ │ │ └── views │ │ │ └── .gitignore │ ├── tests │ │ ├── CreatesApplication.php │ │ ├── Feature │ │ │ └── ExampleTest.php │ │ ├── TestCase.php │ │ └── Unit │ │ │ └── ExampleTest.php │ └── vite.config.js └── laravel-htmx │ ├── .editorconfig │ ├── .env.example │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── app │ ├── Console │ │ └── Kernel.php │ ├── Exceptions │ │ └── Handler.php │ ├── Http │ │ ├── Controllers │ │ │ ├── Auth │ │ │ │ ├── AuthenticatedSessionController.php │ │ │ │ ├── ConfirmablePasswordController.php │ │ │ │ ├── EmailVerificationNotificationController.php │ │ │ │ ├── EmailVerificationPromptController.php │ │ │ │ ├── NewPasswordController.php │ │ │ │ ├── PasswordController.php │ │ │ │ ├── PasswordResetLinkController.php │ │ │ │ ├── RegisteredUserController.php │ │ │ │ └── VerifyEmailController.php │ │ │ ├── Controller.php │ │ │ └── ProfileController.php │ │ ├── Kernel.php │ │ ├── Middleware │ │ │ ├── Authenticate.php │ │ │ ├── EncryptCookies.php │ │ │ ├── PreventRequestsDuringMaintenance.php │ │ │ ├── RedirectIfAuthenticated.php │ │ │ ├── TrimStrings.php │ │ │ ├── TrustHosts.php │ │ │ ├── TrustProxies.php │ │ │ ├── ValidateSignature.php │ │ │ └── VerifyCsrfToken.php │ │ └── Requests │ │ │ ├── Auth │ │ │ └── LoginRequest.php │ │ │ └── ProfileUpdateRequest.php │ ├── Models │ │ └── User.php │ ├── Providers │ │ ├── AppServiceProvider.php │ │ ├── AuthServiceProvider.php │ │ ├── BroadcastServiceProvider.php │ │ ├── EventServiceProvider.php │ │ └── RouteServiceProvider.php │ └── View │ │ └── Components │ │ ├── AppLayout.php │ │ └── GuestLayout.php │ ├── artisan │ ├── bootstrap │ ├── app.php │ └── cache │ │ └── .gitignore │ ├── composer.json │ ├── composer.lock │ ├── config │ ├── app.php │ ├── auth.php │ ├── broadcasting.php │ ├── cache.php │ ├── cors.php │ ├── database.php │ ├── filesystems.php │ ├── hashing.php │ ├── logging.php │ ├── mail.php │ ├── queue.php │ ├── sanctum.php │ ├── services.php │ ├── session.php │ └── view.php │ ├── database │ ├── .gitignore │ ├── factories │ │ └── UserFactory.php │ ├── migrations │ │ ├── 2014_10_12_000000_create_users_table.php │ │ ├── 2014_10_12_100000_create_password_reset_tokens_table.php │ │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ │ └── 2019_12_14_000001_create_personal_access_tokens_table.php │ └── seeders │ │ └── DatabaseSeeder.php │ ├── package-lock.json │ ├── package.json │ ├── phpunit.xml │ ├── postcss.config.js │ ├── public │ ├── .htaccess │ ├── favicon.ico │ ├── index.php │ └── robots.txt │ ├── resources │ ├── css │ │ └── app.css │ ├── js │ │ ├── app.js │ │ └── bootstrap.js │ └── views │ │ ├── auth │ │ ├── confirm-password.blade.php │ │ ├── forgot-password.blade.php │ │ ├── login.blade.php │ │ ├── register.blade.php │ │ ├── reset-password.blade.php │ │ └── verify-email.blade.php │ │ ├── clicked.blade.php │ │ ├── components │ │ ├── application-logo.blade.php │ │ ├── auth-session-status.blade.php │ │ ├── danger-button.blade.php │ │ ├── dropdown-link.blade.php │ │ ├── dropdown.blade.php │ │ ├── input-error.blade.php │ │ ├── input-label.blade.php │ │ ├── modal.blade.php │ │ ├── nav-link.blade.php │ │ ├── primary-button.blade.php │ │ ├── responsive-nav-link.blade.php │ │ ├── secondary-button.blade.php │ │ └── text-input.blade.php │ │ ├── dashboard.blade.php │ │ ├── layouts │ │ ├── app.blade.php │ │ ├── guest.blade.php │ │ └── navigation.blade.php │ │ ├── profile │ │ ├── edit.blade.php │ │ └── partials │ │ │ ├── delete-user-form.blade.php │ │ │ ├── update-password-form.blade.php │ │ │ └── update-profile-information-form.blade.php │ │ └── welcome.blade.php │ ├── routes │ ├── api.php │ ├── auth.php │ ├── channels.php │ ├── console.php │ └── web.php │ ├── storage │ ├── app │ │ ├── .gitignore │ │ └── public │ │ │ └── .gitignore │ └── framework │ │ ├── .gitignore │ │ ├── cache │ │ ├── .gitignore │ │ └── data │ │ │ └── .gitignore │ │ ├── sessions │ │ └── .gitignore │ │ ├── testing │ │ └── .gitignore │ │ └── views │ │ └── .gitignore │ ├── tailwind.config.js │ ├── tests │ ├── CreatesApplication.php │ ├── Feature │ │ ├── Auth │ │ │ ├── AuthenticationTest.php │ │ │ ├── EmailVerificationTest.php │ │ │ ├── PasswordConfirmationTest.php │ │ │ ├── PasswordResetTest.php │ │ │ ├── PasswordUpdateTest.php │ │ │ └── RegistrationTest.php │ │ ├── ExampleTest.php │ │ └── ProfileTest.php │ ├── TestCase.php │ └── Unit │ │ └── ExampleTest.php │ └── vite.config.js ├── 2024-01-19 ├── .DS_Store ├── .gitignore ├── Interstellar Runner.zip ├── Package │ ├── InterstellarRunner.gif │ ├── InterstellarRunner.mtl │ ├── InterstellarRunner.obj │ ├── InterstellarRunner.png │ └── InterstellarRunner.vox ├── README.md ├── hello-world │ ├── .gitattributes │ ├── .gitignore │ ├── icon.svg │ ├── icon.svg.import │ └── project.godot ├── instancing_starter │ ├── Ball.tscn │ ├── Main.gd │ ├── Main.tscn │ ├── README.md │ ├── assets │ │ ├── Bouncy Platform Long.png │ │ ├── Bouncy Platform Long.png.import │ │ ├── Bouncy Platform Medium.png │ │ ├── Bouncy Platform Medium.png.import │ │ ├── ballBlue_10.png │ │ └── ballBlue_10.png.import │ ├── icon.svg │ ├── icon.svg.import │ └── project.godot └── squash_the_creeps_start_1.1.0 │ ├── .DS_Store │ ├── .gitignore │ ├── Player.gd │ ├── ScoreLabel.gd │ ├── art │ ├── House In a Forest Loop.ogg │ ├── House In a Forest Loop.ogg.import │ ├── InterstellarRunner.gif │ ├── InterstellarRunner.glb │ ├── InterstellarRunner.glb.import │ ├── InterstellarRunner.mtl │ ├── InterstellarRunner.obj │ ├── InterstellarRunner.obj.import │ ├── InterstellarRunner.png │ ├── InterstellarRunner.png.import │ ├── InterstellarRunner.vox │ ├── InterstellarRunner_0.png │ ├── InterstellarRunner_0.png.import │ ├── body.material │ ├── eye.material │ ├── mob.glb │ ├── mob.glb.import │ ├── mob_body.material │ ├── mob_eye.material │ ├── player.glb │ ├── player.glb.import │ └── pupil.material │ ├── default_bus_layout.tres │ ├── default_env.tres │ ├── fonts │ ├── LICENSE.txt │ ├── Montserrat-Medium.ttf │ └── Montserrat-Medium.ttf.import │ ├── icon.png │ ├── icon.png.import │ ├── main.gd │ ├── main.tscn │ ├── mob.gd │ ├── mob.tscn │ ├── player.tscn │ └── project.godot ├── 2024-01-26 ├── .DS_Store ├── README.md ├── books │ ├── .env.sample │ ├── .gitignore │ ├── docker-compose.yml │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── coding │ │ │ │ └── garden │ │ │ │ └── books │ │ │ │ ├── Book.java │ │ │ │ ├── BookController.java │ │ │ │ ├── BookRepository.java │ │ │ │ ├── BookResourceRepository.java │ │ │ │ ├── BooksApplication.java │ │ │ │ └── WowController.java │ │ └── resources │ │ │ ├── application.properties │ │ │ └── templates │ │ │ └── wow.html │ │ └── test │ │ └── java │ │ └── coding │ │ └── garden │ │ └── books │ │ └── BooksApplicationTests.java ├── demo-resource │ └── demo │ │ ├── .gitignore │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── coding │ │ │ │ └── garden │ │ │ │ ├── DemoApplication.java │ │ │ │ └── restservice │ │ │ │ ├── Greeting.java │ │ │ │ └── GreetingController.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── demo │ │ └── demo │ │ └── DemoApplicationTests.java └── demo │ ├── .gitignore │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── demo │ │ │ ├── DemoApplication.java │ │ │ └── Person.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── com │ └── example │ └── demo │ └── DemoApplicationTests.java ├── 2024-02-02 ├── .gitignore ├── README.md ├── codinggarden_twitch_chat │ ├── .gitignore │ ├── .metadata │ ├── README.md │ ├── analysis_options.yaml │ ├── android │ │ ├── .gitignore │ │ ├── app │ │ │ ├── build.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── kotlin │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── codinggarden_twitch_chat │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── res │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── values-night │ │ │ │ │ └── styles.xml │ │ │ │ │ └── values │ │ │ │ │ └── styles.xml │ │ │ │ └── profile │ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ └── settings.gradle │ ├── ios │ │ ├── .gitignore │ │ ├── Flutter │ │ │ ├── AppFrameworkInfo.plist │ │ │ ├── Debug.xcconfig │ │ │ └── Release.xcconfig │ │ ├── Runner.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ ├── Runner │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ └── LaunchImage.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ └── README.md │ │ │ ├── Base.lproj │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── Runner-Bridging-Header.h │ │ └── RunnerTests │ │ │ └── RunnerTests.swift │ ├── lib │ │ └── main.dart │ ├── linux │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── flutter │ │ │ ├── CMakeLists.txt │ │ │ ├── generated_plugin_registrant.cc │ │ │ ├── generated_plugin_registrant.h │ │ │ └── generated_plugins.cmake │ │ ├── main.cc │ │ ├── my_application.cc │ │ └── my_application.h │ ├── macos │ │ ├── .gitignore │ │ ├── Flutter │ │ │ ├── Flutter-Debug.xcconfig │ │ │ ├── Flutter-Release.xcconfig │ │ │ └── GeneratedPluginRegistrant.swift │ │ ├── Runner.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── Runner │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── app_icon_1024.png │ │ │ │ │ ├── app_icon_128.png │ │ │ │ │ ├── app_icon_16.png │ │ │ │ │ ├── app_icon_256.png │ │ │ │ │ ├── app_icon_32.png │ │ │ │ │ ├── app_icon_512.png │ │ │ │ │ └── app_icon_64.png │ │ │ ├── Base.lproj │ │ │ │ └── MainMenu.xib │ │ │ ├── Configs │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ ├── Debug.xcconfig │ │ │ │ ├── Release.xcconfig │ │ │ │ └── Warnings.xcconfig │ │ │ ├── DebugProfile.entitlements │ │ │ ├── Info.plist │ │ │ ├── MainFlutterWindow.swift │ │ │ └── Release.entitlements │ │ └── RunnerTests │ │ │ └── RunnerTests.swift │ ├── pubspec.lock │ ├── pubspec.yaml │ ├── web │ │ ├── favicon.png │ │ ├── icons │ │ │ ├── Icon-192.png │ │ │ ├── Icon-512.png │ │ │ ├── Icon-maskable-192.png │ │ │ └── Icon-maskable-512.png │ │ ├── index.html │ │ └── manifest.json │ └── windows │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── flutter │ │ ├── CMakeLists.txt │ │ ├── generated_plugin_registrant.cc │ │ ├── generated_plugin_registrant.h │ │ └── generated_plugins.cmake │ │ └── runner │ │ ├── CMakeLists.txt │ │ ├── Runner.rc │ │ ├── flutter_window.cpp │ │ ├── flutter_window.h │ │ ├── main.cpp │ │ ├── resource.h │ │ ├── resources │ │ └── app_icon.ico │ │ ├── runner.exe.manifest │ │ ├── utils.cpp │ │ ├── utils.h │ │ ├── win32_window.cpp │ │ └── win32_window.h └── my_first_app │ ├── .gitignore │ ├── .metadata │ ├── README.md │ ├── analysis_options.yaml │ ├── android │ ├── .gitignore │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── kotlin │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── my_first_app │ │ │ │ │ └── MainActivity.kt │ │ │ └── res │ │ │ │ ├── drawable-v21 │ │ │ │ └── launch_background.xml │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── values-night │ │ │ │ └── styles.xml │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle │ ├── ios │ ├── .gitignore │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ ├── Runner │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ └── LaunchImage.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchImage.png │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ └── README.md │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── Info.plist │ │ └── Runner-Bridging-Header.h │ └── RunnerTests │ │ └── RunnerTests.swift │ ├── lib │ └── main.dart │ ├── linux │ ├── .gitignore │ ├── CMakeLists.txt │ ├── flutter │ │ ├── CMakeLists.txt │ │ ├── generated_plugin_registrant.cc │ │ ├── generated_plugin_registrant.h │ │ └── generated_plugins.cmake │ ├── main.cc │ ├── my_application.cc │ └── my_application.h │ ├── macos │ ├── .gitignore │ ├── Flutter │ │ ├── Flutter-Debug.xcconfig │ │ ├── Flutter-Release.xcconfig │ │ └── GeneratedPluginRegistrant.swift │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ ├── Runner │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── app_icon_1024.png │ │ │ │ ├── app_icon_128.png │ │ │ │ ├── app_icon_16.png │ │ │ │ ├── app_icon_256.png │ │ │ │ ├── app_icon_32.png │ │ │ │ ├── app_icon_512.png │ │ │ │ └── app_icon_64.png │ │ ├── Base.lproj │ │ │ └── MainMenu.xib │ │ ├── Configs │ │ │ ├── AppInfo.xcconfig │ │ │ ├── Debug.xcconfig │ │ │ ├── Release.xcconfig │ │ │ └── Warnings.xcconfig │ │ ├── DebugProfile.entitlements │ │ ├── Info.plist │ │ ├── MainFlutterWindow.swift │ │ └── Release.entitlements │ └── RunnerTests │ │ └── RunnerTests.swift │ ├── pubspec.lock │ ├── pubspec.yaml │ ├── test │ └── widget_test.dart │ ├── web │ ├── favicon.png │ ├── icons │ │ ├── Icon-192.png │ │ ├── Icon-512.png │ │ ├── Icon-maskable-192.png │ │ └── Icon-maskable-512.png │ ├── index.html │ └── manifest.json │ └── windows │ ├── .gitignore │ ├── CMakeLists.txt │ ├── flutter │ ├── CMakeLists.txt │ ├── generated_plugin_registrant.cc │ ├── generated_plugin_registrant.h │ └── generated_plugins.cmake │ └── runner │ ├── CMakeLists.txt │ ├── Runner.rc │ ├── flutter_window.cpp │ ├── flutter_window.h │ ├── main.cpp │ ├── resource.h │ ├── resources │ └── app_icon.ico │ ├── runner.exe.manifest │ ├── utils.cpp │ ├── utils.h │ ├── win32_window.cpp │ └── win32_window.h ├── 2024-02-09 ├── README.md ├── app-diagram.excalidraw ├── app-diagram.png └── app │ ├── .gitignore │ ├── docker-compose.yml │ ├── package-lock.json │ ├── package.json │ └── packages │ ├── data-cacher │ ├── package.json │ └── src │ │ └── index.ts │ ├── redis-connection │ ├── package.json │ └── src │ │ ├── constants.ts │ │ ├── queues.ts │ │ └── redis.ts │ └── web │ ├── .eslintignore │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── .npmrc │ ├── .prettierignore │ ├── .prettierrc │ ├── README.md │ ├── package.json │ ├── src │ ├── app.d.ts │ ├── app.html │ ├── lib │ │ ├── index.ts │ │ └── server │ │ │ └── redis-connection │ │ │ └── src │ │ │ ├── constants.ts │ │ │ ├── queues.ts │ │ │ └── redis.ts │ └── routes │ │ ├── +page.svelte │ │ └── api │ │ └── pokemon │ │ └── +server.ts │ ├── static │ └── favicon.png │ ├── svelte.config.js │ ├── tsconfig.json │ └── vite.config.ts ├── LICENSE └── README.md /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/.DS_Store -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/.env.sample: -------------------------------------------------------------------------------- 1 | NODE_ENV=development -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "env": { 4 | "jest": true 5 | }, 6 | "parser": "@typescript-eslint/parser", 7 | "parserOptions": { 8 | "project": [ 9 | "./tsconfig.json" 10 | ] 11 | }, 12 | "extends": "airbnb-typescript/base", 13 | "plugins": [ 14 | "import", 15 | "@typescript-eslint" 16 | ], 17 | "rules": { 18 | "comma-dangle": 0, 19 | "no-underscore-dangle": 0, 20 | "no-param-reassign": 0, 21 | "no-return-assign": 0, 22 | "camelcase": 0, 23 | "import/extensions": 0, 24 | "@typescript-eslint/no-redeclare": 0 25 | }, 26 | "settings": { 27 | "import/parsers": { 28 | "@typescript-eslint/parser": [ 29 | ".ts", 30 | ".tsx" 31 | ] 32 | }, 33 | "import/resolver": { 34 | "typescript": {} 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ 2 | module.exports = { 3 | preset: 'ts-jest', 4 | testEnvironment: 'node', 5 | modulePathIgnorePatterns: ['/dist/'], 6 | }; -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/src/api/emojis.ts: -------------------------------------------------------------------------------- 1 | import express from 'express'; 2 | 3 | const router = express.Router(); 4 | 5 | type EmojiResponse = string[]; 6 | 7 | router.get<{}, EmojiResponse>('/', (req, res) => { 8 | res.json(['😀', '😳', '🙄']); 9 | }); 10 | 11 | export default router; 12 | -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/src/api/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express'; 2 | 3 | import MessageResponse from '../interfaces/MessageResponse'; 4 | import emojis from './emojis'; 5 | 6 | const router = express.Router(); 7 | 8 | router.get<{}, MessageResponse>('/', (req, res) => { 9 | res.json({ 10 | message: 'API - 👋🌎🌍🌏', 11 | }); 12 | }); 13 | 14 | router.use('/emojis', emojis); 15 | 16 | export default router; 17 | -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/src/index.ts: -------------------------------------------------------------------------------- 1 | import app from './app'; 2 | 3 | const port = process.env.PORT || 5000; 4 | app.listen(port, () => { 5 | /* eslint-disable no-console */ 6 | console.log(`Listening: http://localhost:${port}`); 7 | /* eslint-enable no-console */ 8 | }); 9 | -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/src/interfaces/ErrorResponse.ts: -------------------------------------------------------------------------------- 1 | import MessageResponse from './MessageResponse'; 2 | 3 | export default interface ErrorResponse extends MessageResponse { 4 | stack?: string; 5 | } -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/src/interfaces/MessageResponse.ts: -------------------------------------------------------------------------------- 1 | export default interface MessageResponse { 2 | message: string; 3 | } 4 | -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/src/middlewares.ts: -------------------------------------------------------------------------------- 1 | import { NextFunction, Request, Response } from 'express'; 2 | 3 | import ErrorResponse from './interfaces/ErrorResponse'; 4 | 5 | export function notFound(req: Request, res: Response, next: NextFunction) { 6 | res.status(404); 7 | const error = new Error(`🔍 - Not Found - ${req.originalUrl}`); 8 | next(error); 9 | } 10 | 11 | // eslint-disable-next-line @typescript-eslint/no-unused-vars 12 | export function errorHandler(err: Error, req: Request, res: Response, next: NextFunction) { 13 | const statusCode = res.statusCode !== 200 ? res.statusCode : 500; 14 | res.status(statusCode); 15 | res.json({ 16 | message: err.message, 17 | stack: process.env.NODE_ENV === 'production' ? '🥞' : err.stack, 18 | }); 19 | } 20 | -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/src/views/partials/error.hbs: -------------------------------------------------------------------------------- 1 |
2 | {{message}} 3 |
-------------------------------------------------------------------------------- /2023-12-29/trying-htmx/src/views/partials/good-job.hbs: -------------------------------------------------------------------------------- 1 |

GOOD JOB!

-------------------------------------------------------------------------------- /2023-12-29/trying-htmx/src/views/partials/search-results.hbs: -------------------------------------------------------------------------------- 1 | {{#if filter }} 2 | {{#if results.length}} 3 | {{#each results}} 4 |
5 |

{{this}}

6 |
7 | {{/each}} 8 | {{else}} 9 |

No suggestions to display.

10 | {{/if}} 11 | {{else}} 12 |

Type to see suggestions.

13 | {{/if}} -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/test/api.test.ts: -------------------------------------------------------------------------------- 1 | import request from 'supertest'; 2 | 3 | import app from '../src/app'; 4 | 5 | describe('GET /api/v1', () => { 6 | it('responds with a json message', (done) => { 7 | request(app) 8 | .get('/api/v1') 9 | .set('Accept', 'application/json') 10 | .expect('Content-Type', /json/) 11 | .expect(200, { 12 | message: 'API - 👋🌎🌍🌏', 13 | }, done); 14 | }); 15 | }); 16 | 17 | describe('GET /api/v1/emojis', () => { 18 | it('responds with a json message', (done) => { 19 | request(app) 20 | .get('/api/v1/emojis') 21 | .set('Accept', 'application/json') 22 | .expect('Content-Type', /json/) 23 | .expect(200, ['😀', '😳', '🙄'], done); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/test/app.test.ts: -------------------------------------------------------------------------------- 1 | import request from 'supertest'; 2 | 3 | import app from '../src/app'; 4 | 5 | describe('app', () => { 6 | it('responds with a not found message', (done) => { 7 | request(app) 8 | .get('/what-is-this-even') 9 | .set('Accept', 'application/json') 10 | .expect('Content-Type', /json/) 11 | .expect(404, done); 12 | }); 13 | }); 14 | 15 | describe('GET /', () => { 16 | it('responds with a json message', (done) => { 17 | request(app) 18 | .get('/') 19 | .set('Accept', 'application/json') 20 | .expect('Content-Type', /json/) 21 | .expect(200, { 22 | message: '🦄🌈✨👋🌎🌍🌏✨🌈🦄', 23 | }, done); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /2023-12-29/trying-htmx/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "dist", 4 | "sourceMap": true, 5 | "target": "esnext", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noImplicitAny": true, 10 | "strict": true, 11 | "skipLibCheck": true, 12 | "jsx": "preserve" 13 | }, 14 | "include": [ 15 | "./*.js", 16 | "src/**/*.ts", 17 | "src/**/*.tsx", 18 | "test/**/*.ts", 19 | ], 20 | } 21 | -------------------------------------------------------------------------------- /2024-01-05/learn-rust/create-express-api/.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | example-api -------------------------------------------------------------------------------- /2024-01-05/learn-rust/create-express-api/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "create-express-api" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | clap = { version = "4.4.13", features = ["derive"] } 10 | colored = "2.1.0" 11 | -------------------------------------------------------------------------------- /2024-01-05/learn-rust/create-express-api/src/error_messages.rs: -------------------------------------------------------------------------------- 1 | // TODO: learn about visibility 2 | pub(crate) const CLONE_ERROR: &str = "Failed to clone template."; 3 | pub(crate) const INSTALL_ERROR: &str = "Failed to install dependencies. You can try running npm install in the created directory yourself"; 4 | pub(crate) const REMOVE_GIT_ERROR: &str = "Error removing git history. You can try manually removing the .git folder yourself."; -------------------------------------------------------------------------------- /2024-01-05/learn-rust/hello-world/index.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println!("Hello World!"); 3 | } 4 | -------------------------------------------------------------------------------- /2024-01-12/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | node_modules/ 3 | npm-debug.log 4 | yarn-error.log 5 | 6 | # Laravel 4 specific 7 | bootstrap/compiled.php 8 | app/storage/ 9 | 10 | # Laravel 5 & Lumen specific 11 | public/storage 12 | public/hot 13 | 14 | # Laravel 5 & Lumen specific with changed public path 15 | public_html/storage 16 | public_html/hot 17 | 18 | storage/*.key 19 | .env 20 | Homestead.yaml 21 | Homestead.json 22 | /.vagrant 23 | .phpunit.result.cache 24 | -------------------------------------------------------------------------------- /2024-01-12/chirper/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 4 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.{yml,yaml}] 15 | indent_size = 2 16 | 17 | [docker-compose.yml] 18 | indent_size = 4 19 | -------------------------------------------------------------------------------- /2024-01-12/chirper/.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | 3 | *.blade.php diff=html 4 | *.css diff=css 5 | *.html diff=html 6 | *.md diff=markdown 7 | *.php diff=php 8 | 9 | /.github export-ignore 10 | CHANGELOG.md export-ignore 11 | .styleci.yml export-ignore 12 | -------------------------------------------------------------------------------- /2024-01-12/chirper/.gitignore: -------------------------------------------------------------------------------- 1 | /.phpunit.cache 2 | /node_modules 3 | /public/build 4 | /public/hot 5 | /public/storage 6 | /storage/*.key 7 | /vendor 8 | .env 9 | .env.backup 10 | .env.production 11 | .phpunit.result.cache 12 | Homestead.json 13 | Homestead.yaml 14 | auth.json 15 | npm-debug.log 16 | yarn-error.log 17 | /.fleet 18 | /.idea 19 | /.vscode 20 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Console/Kernel.php: -------------------------------------------------------------------------------- 1 | command('inspire')->hourly(); 16 | } 17 | 18 | /** 19 | * Register the commands for the application. 20 | */ 21 | protected function commands(): void 22 | { 23 | $this->load(__DIR__.'/Commands'); 24 | 25 | require base_path('routes/console.php'); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Exceptions/Handler.php: -------------------------------------------------------------------------------- 1 | 14 | */ 15 | protected $dontFlash = [ 16 | 'current_password', 17 | 'password', 18 | 'password_confirmation', 19 | ]; 20 | 21 | /** 22 | * Register the exception handling callbacks for the application. 23 | */ 24 | public function register(): void 25 | { 26 | $this->reportable(function (Throwable $e) { 27 | // 28 | }); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Http/Controllers/Auth/EmailVerificationNotificationController.php: -------------------------------------------------------------------------------- 1 | user()->hasVerifiedEmail()) { 18 | return redirect()->intended(RouteServiceProvider::HOME); 19 | } 20 | 21 | $request->user()->sendEmailVerificationNotification(); 22 | 23 | return back()->with('status', 'verification-link-sent'); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Http/Controllers/Auth/EmailVerificationPromptController.php: -------------------------------------------------------------------------------- 1 | user()->hasVerifiedEmail() 19 | ? redirect()->intended(RouteServiceProvider::HOME) 20 | : view('auth.verify-email'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | expectsJson() ? null : route('login'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Http/Middleware/EncryptCookies.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Http/Middleware/PreventRequestsDuringMaintenance.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Http/Middleware/TrimStrings.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | 'current_password', 16 | 'password', 17 | 'password_confirmation', 18 | ]; 19 | } 20 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Http/Middleware/TrustHosts.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | public function hosts(): array 15 | { 16 | return [ 17 | $this->allSubdomainsOfApplicationUrl(), 18 | ]; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Http/Middleware/TrustProxies.php: -------------------------------------------------------------------------------- 1 | |string|null 14 | */ 15 | protected $proxies; 16 | 17 | /** 18 | * The headers that should be used to detect proxies. 19 | * 20 | * @var int 21 | */ 22 | protected $headers = 23 | Request::HEADER_X_FORWARDED_FOR | 24 | Request::HEADER_X_FORWARDED_HOST | 25 | Request::HEADER_X_FORWARDED_PORT | 26 | Request::HEADER_X_FORWARDED_PROTO | 27 | Request::HEADER_X_FORWARDED_AWS_ELB; 28 | } 29 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Http/Middleware/ValidateSignature.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 'fbclid', 16 | // 'utm_campaign', 17 | // 'utm_content', 18 | // 'utm_medium', 19 | // 'utm_source', 20 | // 'utm_term', 21 | ]; 22 | } 23 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Http/Middleware/VerifyCsrfToken.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Http/Requests/ProfileUpdateRequest.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | public function rules(): array 17 | { 18 | return [ 19 | 'name' => ['required', 'string', 'max:255'], 20 | 'email' => ['required', 'string', 'lowercase', 'email', 'max:255', Rule::unique(User::class)->ignore($this->user()->id)], 21 | ]; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Listeners/SendChirpCreatedNotifications.php: -------------------------------------------------------------------------------- 1 | chirp->user_id)->cursor() as $user) { 27 | $user->notify(new NewChirp($event->chirp)); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Models/Chirp.php: -------------------------------------------------------------------------------- 1 | ChirpCreated::class, 20 | ]; 21 | 22 | public function user(): BelongsTo 23 | { 24 | return $this->belongsTo(User::class); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Providers/AppServiceProvider.php: -------------------------------------------------------------------------------- 1 | 14 | */ 15 | protected $policies = [ 16 | // 17 | ]; 18 | 19 | /** 20 | * Register any authentication / authorization services. 21 | */ 22 | public function boot(): void 23 | { 24 | // 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /2024-01-12/chirper/app/Providers/BroadcastServiceProvider.php: -------------------------------------------------------------------------------- 1 | string('email')->primary(); 16 | $table->string('token'); 17 | $table->timestamp('created_at')->nullable(); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | */ 24 | public function down(): void 25 | { 26 | Schema::dropIfExists('password_reset_tokens'); 27 | } 28 | }; 29 | -------------------------------------------------------------------------------- /2024-01-12/chirper/database/migrations/2024_01_12_203238_create_chirps_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->foreignId('user_id')->constrained()->cascadeOnDelete(); 17 | $table->string('message'); 18 | $table->timestamps(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | */ 25 | public function down(): void 26 | { 27 | Schema::dropIfExists('chirps'); 28 | } 29 | }; 30 | -------------------------------------------------------------------------------- /2024-01-12/chirper/database/seeders/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | create(); 16 | 17 | // \App\Models\User::factory()->create([ 18 | // 'name' => 'Test User', 19 | // 'email' => 'test@example.com', 20 | // ]); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /2024-01-12/chirper/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "type": "module", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "vite build" 7 | }, 8 | "devDependencies": { 9 | "@tailwindcss/forms": "^0.5.2", 10 | "alpinejs": "^3.4.2", 11 | "autoprefixer": "^10.4.2", 12 | "axios": "^1.6.4", 13 | "laravel-vite-plugin": "^1.0.0", 14 | "postcss": "^8.4.31", 15 | "tailwindcss": "^3.1.0", 16 | "vite": "^5.0.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /2024-01-12/chirper/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /2024-01-12/chirper/public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews -Indexes 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Handle Authorization Header 9 | RewriteCond %{HTTP:Authorization} . 10 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 11 | 12 | # Redirect Trailing Slashes If Not A Folder... 13 | RewriteCond %{REQUEST_FILENAME} !-d 14 | RewriteCond %{REQUEST_URI} (.+)/$ 15 | RewriteRule ^ %1 [L,R=301] 16 | 17 | # Send Requests To Front Controller... 18 | RewriteCond %{REQUEST_FILENAME} !-d 19 | RewriteCond %{REQUEST_FILENAME} !-f 20 | RewriteRule ^ index.php [L] 21 | 22 | -------------------------------------------------------------------------------- /2024-01-12/chirper/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-12/chirper/public/favicon.ico -------------------------------------------------------------------------------- /2024-01-12/chirper/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/css/app.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/js/app.js: -------------------------------------------------------------------------------- 1 | import './bootstrap'; 2 | 3 | import Alpine from 'alpinejs'; 4 | 5 | window.Alpine = Alpine; 6 | 7 | Alpine.start(); 8 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/views/components/auth-session-status.blade.php: -------------------------------------------------------------------------------- 1 | @props(['status']) 2 | 3 | @if ($status) 4 |
merge(['class' => 'font-medium text-sm text-green-600']) }}> 5 | {{ $status }} 6 |
7 | @endif 8 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/views/components/danger-button.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/views/components/dropdown-link.blade.php: -------------------------------------------------------------------------------- 1 | merge(['class' => 'block w-full px-4 py-2 text-start text-sm leading-5 text-gray-700 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 transition duration-150 ease-in-out']) }}>{{ $slot }} 2 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/views/components/input-error.blade.php: -------------------------------------------------------------------------------- 1 | @props(['messages']) 2 | 3 | @if ($messages) 4 | 9 | @endif 10 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/views/components/input-label.blade.php: -------------------------------------------------------------------------------- 1 | @props(['value']) 2 | 3 | 6 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/views/components/nav-link.blade.php: -------------------------------------------------------------------------------- 1 | @props(['active']) 2 | 3 | @php 4 | $classes = ($active ?? false) 5 | ? 'inline-flex items-center px-1 pt-1 border-b-2 border-indigo-400 text-sm font-medium leading-5 text-gray-900 focus:outline-none focus:border-indigo-700 transition duration-150 ease-in-out' 6 | : 'inline-flex items-center px-1 pt-1 border-b-2 border-transparent text-sm font-medium leading-5 text-gray-500 hover:text-gray-700 hover:border-gray-300 focus:outline-none focus:text-gray-700 focus:border-gray-300 transition duration-150 ease-in-out'; 7 | @endphp 8 | 9 | merge(['class' => $classes]) }}> 10 | {{ $slot }} 11 | 12 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/views/components/primary-button.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/views/components/responsive-nav-link.blade.php: -------------------------------------------------------------------------------- 1 | @props(['active']) 2 | 3 | @php 4 | $classes = ($active ?? false) 5 | ? 'block w-full ps-3 pe-4 py-2 border-l-4 border-indigo-400 text-start text-base font-medium text-indigo-700 bg-indigo-50 focus:outline-none focus:text-indigo-800 focus:bg-indigo-100 focus:border-indigo-700 transition duration-150 ease-in-out' 6 | : 'block w-full ps-3 pe-4 py-2 border-l-4 border-transparent text-start text-base font-medium text-gray-600 hover:text-gray-800 hover:bg-gray-50 hover:border-gray-300 focus:outline-none focus:text-gray-800 focus:bg-gray-50 focus:border-gray-300 transition duration-150 ease-in-out'; 7 | @endphp 8 | 9 | merge(['class' => $classes]) }}> 10 | {{ $slot }} 11 | 12 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/views/components/secondary-button.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/views/components/text-input.blade.php: -------------------------------------------------------------------------------- 1 | @props(['disabled' => false]) 2 | 3 | merge(['class' => 'border-gray-300 focus:border-indigo-500 focus:ring-indigo-500 rounded-md shadow-sm']) !!}> 4 | -------------------------------------------------------------------------------- /2024-01-12/chirper/resources/views/dashboard.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |

4 | {{ __('Dashboard') }} 5 |

6 |
7 | 8 |
9 |
10 |
11 |
12 | {{ __("You're logged in!") }} 13 |
14 |
15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /2024-01-12/chirper/routes/api.php: -------------------------------------------------------------------------------- 1 | get('/user', function (Request $request) { 18 | return $request->user(); 19 | }); 20 | -------------------------------------------------------------------------------- /2024-01-12/chirper/routes/channels.php: -------------------------------------------------------------------------------- 1 | id === (int) $id; 18 | }); 19 | -------------------------------------------------------------------------------- /2024-01-12/chirper/routes/console.php: -------------------------------------------------------------------------------- 1 | comment(Inspiring::quote()); 19 | })->purpose('Display an inspiring quote'); 20 | -------------------------------------------------------------------------------- /2024-01-12/chirper/storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !public/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /2024-01-12/chirper/storage/app/public/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /2024-01-12/chirper/storage/debugbar/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /2024-01-12/chirper/storage/framework/.gitignore: -------------------------------------------------------------------------------- 1 | compiled.php 2 | config.php 3 | down 4 | events.scanned.php 5 | maintenance.php 6 | routes.php 7 | routes.scanned.php 8 | schedule-* 9 | services.json 10 | -------------------------------------------------------------------------------- /2024-01-12/chirper/storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !data/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /2024-01-12/chirper/storage/framework/cache/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /2024-01-12/chirper/storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /2024-01-12/chirper/storage/framework/testing/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /2024-01-12/chirper/storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /2024-01-12/chirper/tailwind.config.js: -------------------------------------------------------------------------------- 1 | import defaultTheme from 'tailwindcss/defaultTheme'; 2 | import forms from '@tailwindcss/forms'; 3 | 4 | /** @type {import('tailwindcss').Config} */ 5 | export default { 6 | content: [ 7 | './vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php', 8 | './storage/framework/views/*.php', 9 | './resources/views/**/*.blade.php', 10 | ], 11 | 12 | theme: { 13 | extend: { 14 | fontFamily: { 15 | sans: ['Figtree', ...defaultTheme.fontFamily.sans], 16 | }, 17 | }, 18 | }, 19 | 20 | plugins: [forms], 21 | }; 22 | -------------------------------------------------------------------------------- /2024-01-12/chirper/tests/CreatesApplication.php: -------------------------------------------------------------------------------- 1 | make(Kernel::class)->bootstrap(); 18 | 19 | return $app; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /2024-01-12/chirper/tests/Feature/ExampleTest.php: -------------------------------------------------------------------------------- 1 | get('/'); 16 | 17 | $response->assertStatus(200); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /2024-01-12/chirper/tests/TestCase.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /2024-01-12/chirper/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import laravel from 'laravel-vite-plugin'; 3 | 4 | export default defineConfig({ 5 | plugins: [ 6 | laravel({ 7 | input: [ 8 | 'resources/css/app.css', 9 | 'resources/js/app.js', 10 | ], 11 | refresh: true, 12 | }), 13 | ], 14 | }); 15 | -------------------------------------------------------------------------------- /2024-01-12/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require-dev": { 3 | "laravel/breeze": "^1.28" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /2024-01-12/example-app/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 4 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.{yml,yaml}] 15 | indent_size = 2 16 | 17 | [docker-compose.yml] 18 | indent_size = 4 19 | -------------------------------------------------------------------------------- /2024-01-12/example-app/.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | 3 | *.blade.php diff=html 4 | *.css diff=css 5 | *.html diff=html 6 | *.md diff=markdown 7 | *.php diff=php 8 | 9 | /.github export-ignore 10 | CHANGELOG.md export-ignore 11 | .styleci.yml export-ignore 12 | -------------------------------------------------------------------------------- /2024-01-12/example-app/.gitignore: -------------------------------------------------------------------------------- 1 | /.phpunit.cache 2 | /node_modules 3 | /public/build 4 | /public/hot 5 | /public/storage 6 | /storage/*.key 7 | /vendor 8 | .env 9 | .env.backup 10 | .env.production 11 | .phpunit.result.cache 12 | Homestead.json 13 | Homestead.yaml 14 | auth.json 15 | npm-debug.log 16 | yarn-error.log 17 | /.fleet 18 | /.idea 19 | /.vscode 20 | -------------------------------------------------------------------------------- /2024-01-12/example-app/app/Console/Kernel.php: -------------------------------------------------------------------------------- 1 | command('inspire')->hourly(); 16 | } 17 | 18 | /** 19 | * Register the commands for the application. 20 | */ 21 | protected function commands(): void 22 | { 23 | $this->load(__DIR__.'/Commands'); 24 | 25 | require base_path('routes/console.php'); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /2024-01-12/example-app/app/Exceptions/Handler.php: -------------------------------------------------------------------------------- 1 | 14 | */ 15 | protected $dontFlash = [ 16 | 'current_password', 17 | 'password', 18 | 'password_confirmation', 19 | ]; 20 | 21 | /** 22 | * Register the exception handling callbacks for the application. 23 | */ 24 | public function register(): void 25 | { 26 | $this->reportable(function (Throwable $e) { 27 | // 28 | }); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /2024-01-12/example-app/app/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | expectsJson() ? null : route('login'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /2024-01-12/example-app/app/Http/Middleware/EncryptCookies.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /2024-01-12/example-app/app/Http/Middleware/PreventRequestsDuringMaintenance.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /2024-01-12/example-app/app/Http/Middleware/TrimStrings.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | 'current_password', 16 | 'password', 17 | 'password_confirmation', 18 | ]; 19 | } 20 | -------------------------------------------------------------------------------- /2024-01-12/example-app/app/Http/Middleware/TrustHosts.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | public function hosts(): array 15 | { 16 | return [ 17 | $this->allSubdomainsOfApplicationUrl(), 18 | ]; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /2024-01-12/example-app/app/Http/Middleware/TrustProxies.php: -------------------------------------------------------------------------------- 1 | |string|null 14 | */ 15 | protected $proxies; 16 | 17 | /** 18 | * The headers that should be used to detect proxies. 19 | * 20 | * @var int 21 | */ 22 | protected $headers = 23 | Request::HEADER_X_FORWARDED_FOR | 24 | Request::HEADER_X_FORWARDED_HOST | 25 | Request::HEADER_X_FORWARDED_PORT | 26 | Request::HEADER_X_FORWARDED_PROTO | 27 | Request::HEADER_X_FORWARDED_AWS_ELB; 28 | } 29 | -------------------------------------------------------------------------------- /2024-01-12/example-app/app/Http/Middleware/ValidateSignature.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 'fbclid', 16 | // 'utm_campaign', 17 | // 'utm_content', 18 | // 'utm_medium', 19 | // 'utm_source', 20 | // 'utm_term', 21 | ]; 22 | } 23 | -------------------------------------------------------------------------------- /2024-01-12/example-app/app/Http/Middleware/VerifyCsrfToken.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /2024-01-12/example-app/app/Providers/AppServiceProvider.php: -------------------------------------------------------------------------------- 1 | 14 | */ 15 | protected $policies = [ 16 | // 17 | ]; 18 | 19 | /** 20 | * Register any authentication / authorization services. 21 | */ 22 | public function boot(): void 23 | { 24 | // 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /2024-01-12/example-app/app/Providers/BroadcastServiceProvider.php: -------------------------------------------------------------------------------- 1 | string('email')->primary(); 16 | $table->string('token'); 17 | $table->timestamp('created_at')->nullable(); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | */ 24 | public function down(): void 25 | { 26 | Schema::dropIfExists('password_reset_tokens'); 27 | } 28 | }; 29 | -------------------------------------------------------------------------------- /2024-01-12/example-app/database/seeders/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | create(); 16 | 17 | // \App\Models\User::factory()->create([ 18 | // 'name' => 'Test User', 19 | // 'email' => 'test@example.com', 20 | // ]); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /2024-01-12/example-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "type": "module", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "vite build" 7 | }, 8 | "devDependencies": { 9 | "axios": "^1.6.4", 10 | "laravel-vite-plugin": "^1.0.0", 11 | "vite": "^5.0.0" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /2024-01-12/example-app/public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews -Indexes 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Handle Authorization Header 9 | RewriteCond %{HTTP:Authorization} . 10 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 11 | 12 | # Redirect Trailing Slashes If Not A Folder... 13 | RewriteCond %{REQUEST_FILENAME} !-d 14 | RewriteCond %{REQUEST_URI} (.+)/$ 15 | RewriteRule ^ %1 [L,R=301] 16 | 17 | # Send Requests To Front Controller... 18 | RewriteCond %{REQUEST_FILENAME} !-d 19 | RewriteCond %{REQUEST_FILENAME} !-f 20 | RewriteRule ^ index.php [L] 21 | 22 | -------------------------------------------------------------------------------- /2024-01-12/example-app/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-12/example-app/public/favicon.ico -------------------------------------------------------------------------------- /2024-01-12/example-app/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /2024-01-12/example-app/resources/css/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-12/example-app/resources/css/app.css -------------------------------------------------------------------------------- /2024-01-12/example-app/resources/js/app.js: -------------------------------------------------------------------------------- 1 | import './bootstrap'; 2 | -------------------------------------------------------------------------------- /2024-01-12/example-app/routes/api.php: -------------------------------------------------------------------------------- 1 | get('/user', function (Request $request) { 18 | return $request->user(); 19 | }); 20 | -------------------------------------------------------------------------------- /2024-01-12/example-app/routes/channels.php: -------------------------------------------------------------------------------- 1 | id === (int) $id; 18 | }); 19 | -------------------------------------------------------------------------------- /2024-01-12/example-app/routes/console.php: -------------------------------------------------------------------------------- 1 | comment(Inspiring::quote()); 19 | })->purpose('Display an inspiring quote'); 20 | -------------------------------------------------------------------------------- /2024-01-12/example-app/routes/web.php: -------------------------------------------------------------------------------- 1 | make(Kernel::class)->bootstrap(); 18 | 19 | return $app; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /2024-01-12/example-app/tests/Feature/ExampleTest.php: -------------------------------------------------------------------------------- 1 | get('/'); 16 | 17 | $response->assertStatus(200); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /2024-01-12/example-app/tests/TestCase.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /2024-01-12/example-app/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import laravel from 'laravel-vite-plugin'; 3 | 4 | export default defineConfig({ 5 | plugins: [ 6 | laravel({ 7 | input: ['resources/css/app.css', 'resources/js/app.js'], 8 | refresh: true, 9 | }), 10 | ], 11 | }); 12 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 4 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.{yml,yaml}] 15 | indent_size = 2 16 | 17 | [docker-compose.yml] 18 | indent_size = 4 19 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | 3 | *.blade.php diff=html 4 | *.css diff=css 5 | *.html diff=html 6 | *.md diff=markdown 7 | *.php diff=php 8 | 9 | /.github export-ignore 10 | CHANGELOG.md export-ignore 11 | .styleci.yml export-ignore 12 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/.gitignore: -------------------------------------------------------------------------------- 1 | /.phpunit.cache 2 | /node_modules 3 | /public/build 4 | /public/hot 5 | /public/storage 6 | /storage/*.key 7 | /vendor 8 | .env 9 | .env.backup 10 | .env.production 11 | .phpunit.result.cache 12 | Homestead.json 13 | Homestead.yaml 14 | auth.json 15 | npm-debug.log 16 | yarn-error.log 17 | /.fleet 18 | /.idea 19 | /.vscode 20 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Console/Kernel.php: -------------------------------------------------------------------------------- 1 | command('inspire')->hourly(); 16 | } 17 | 18 | /** 19 | * Register the commands for the application. 20 | */ 21 | protected function commands(): void 22 | { 23 | $this->load(__DIR__.'/Commands'); 24 | 25 | require base_path('routes/console.php'); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Exceptions/Handler.php: -------------------------------------------------------------------------------- 1 | 14 | */ 15 | protected $dontFlash = [ 16 | 'current_password', 17 | 'password', 18 | 'password_confirmation', 19 | ]; 20 | 21 | /** 22 | * Register the exception handling callbacks for the application. 23 | */ 24 | public function register(): void 25 | { 26 | $this->reportable(function (Throwable $e) { 27 | // 28 | }); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Http/Controllers/Auth/EmailVerificationNotificationController.php: -------------------------------------------------------------------------------- 1 | user()->hasVerifiedEmail()) { 18 | return redirect()->intended(RouteServiceProvider::HOME); 19 | } 20 | 21 | $request->user()->sendEmailVerificationNotification(); 22 | 23 | return back()->with('status', 'verification-link-sent'); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Http/Controllers/Auth/EmailVerificationPromptController.php: -------------------------------------------------------------------------------- 1 | user()->hasVerifiedEmail() 19 | ? redirect()->intended(RouteServiceProvider::HOME) 20 | : view('auth.verify-email'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | expectsJson() ? null : route('login'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Http/Middleware/EncryptCookies.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Http/Middleware/PreventRequestsDuringMaintenance.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Http/Middleware/TrimStrings.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | 'current_password', 16 | 'password', 17 | 'password_confirmation', 18 | ]; 19 | } 20 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Http/Middleware/TrustHosts.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | public function hosts(): array 15 | { 16 | return [ 17 | $this->allSubdomainsOfApplicationUrl(), 18 | ]; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Http/Middleware/TrustProxies.php: -------------------------------------------------------------------------------- 1 | |string|null 14 | */ 15 | protected $proxies; 16 | 17 | /** 18 | * The headers that should be used to detect proxies. 19 | * 20 | * @var int 21 | */ 22 | protected $headers = 23 | Request::HEADER_X_FORWARDED_FOR | 24 | Request::HEADER_X_FORWARDED_HOST | 25 | Request::HEADER_X_FORWARDED_PORT | 26 | Request::HEADER_X_FORWARDED_PROTO | 27 | Request::HEADER_X_FORWARDED_AWS_ELB; 28 | } 29 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Http/Middleware/ValidateSignature.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 'fbclid', 16 | // 'utm_campaign', 17 | // 'utm_content', 18 | // 'utm_medium', 19 | // 'utm_source', 20 | // 'utm_term', 21 | ]; 22 | } 23 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Http/Middleware/VerifyCsrfToken.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | ]; 16 | } 17 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Http/Requests/ProfileUpdateRequest.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | public function rules(): array 17 | { 18 | return [ 19 | 'name' => ['required', 'string', 'max:255'], 20 | 'email' => ['required', 'string', 'lowercase', 'email', 'max:255', Rule::unique(User::class)->ignore($this->user()->id)], 21 | ]; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Providers/AppServiceProvider.php: -------------------------------------------------------------------------------- 1 | 14 | */ 15 | protected $policies = [ 16 | // 17 | ]; 18 | 19 | /** 20 | * Register any authentication / authorization services. 21 | */ 22 | public function boot(): void 23 | { 24 | // 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/app/Providers/BroadcastServiceProvider.php: -------------------------------------------------------------------------------- 1 | string('email')->primary(); 16 | $table->string('token'); 17 | $table->timestamp('created_at')->nullable(); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | */ 24 | public function down(): void 25 | { 26 | Schema::dropIfExists('password_reset_tokens'); 27 | } 28 | }; 29 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/database/seeders/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | create(); 16 | 17 | // \App\Models\User::factory()->create([ 18 | // 'name' => 'Test User', 19 | // 'email' => 'test@example.com', 20 | // ]); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "type": "module", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "vite build" 7 | }, 8 | "devDependencies": { 9 | "@tailwindcss/forms": "^0.5.2", 10 | "alpinejs": "^3.4.2", 11 | "autoprefixer": "^10.4.2", 12 | "axios": "^1.6.4", 13 | "laravel-vite-plugin": "^1.0.0", 14 | "postcss": "^8.4.31", 15 | "tailwindcss": "^3.1.0", 16 | "vite": "^5.0.0" 17 | }, 18 | "dependencies": { 19 | "htmx.org": "^1.9.10" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews -Indexes 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Handle Authorization Header 9 | RewriteCond %{HTTP:Authorization} . 10 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 11 | 12 | # Redirect Trailing Slashes If Not A Folder... 13 | RewriteCond %{REQUEST_FILENAME} !-d 14 | RewriteCond %{REQUEST_URI} (.+)/$ 15 | RewriteRule ^ %1 [L,R=301] 16 | 17 | # Send Requests To Front Controller... 18 | RewriteCond %{REQUEST_FILENAME} !-d 19 | RewriteCond %{REQUEST_FILENAME} !-f 20 | RewriteRule ^ index.php [L] 21 | 22 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-12/laravel-htmx/public/favicon.ico -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/css/app.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/js/app.js: -------------------------------------------------------------------------------- 1 | import './bootstrap'; 2 | 3 | import 'htmx.org'; 4 | import Alpine from 'alpinejs'; 5 | 6 | window.Alpine = Alpine; 7 | 8 | Alpine.start(); 9 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/views/clicked.blade.php: -------------------------------------------------------------------------------- 1 |

Good job!

2 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/views/components/auth-session-status.blade.php: -------------------------------------------------------------------------------- 1 | @props(['status']) 2 | 3 | @if ($status) 4 |
merge(['class' => 'font-medium text-sm text-green-600']) }}> 5 | {{ $status }} 6 |
7 | @endif 8 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/views/components/danger-button.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/views/components/dropdown-link.blade.php: -------------------------------------------------------------------------------- 1 | merge(['class' => 'block w-full px-4 py-2 text-start text-sm leading-5 text-gray-700 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 transition duration-150 ease-in-out']) }}>{{ $slot }} 2 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/views/components/input-error.blade.php: -------------------------------------------------------------------------------- 1 | @props(['messages']) 2 | 3 | @if ($messages) 4 | 9 | @endif 10 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/views/components/input-label.blade.php: -------------------------------------------------------------------------------- 1 | @props(['value']) 2 | 3 | 6 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/views/components/nav-link.blade.php: -------------------------------------------------------------------------------- 1 | @props(['active']) 2 | 3 | @php 4 | $classes = ($active ?? false) 5 | ? 'inline-flex items-center px-1 pt-1 border-b-2 border-indigo-400 text-sm font-medium leading-5 text-gray-900 focus:outline-none focus:border-indigo-700 transition duration-150 ease-in-out' 6 | : 'inline-flex items-center px-1 pt-1 border-b-2 border-transparent text-sm font-medium leading-5 text-gray-500 hover:text-gray-700 hover:border-gray-300 focus:outline-none focus:text-gray-700 focus:border-gray-300 transition duration-150 ease-in-out'; 7 | @endphp 8 | 9 | merge(['class' => $classes]) }}> 10 | {{ $slot }} 11 | 12 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/views/components/primary-button.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/views/components/responsive-nav-link.blade.php: -------------------------------------------------------------------------------- 1 | @props(['active']) 2 | 3 | @php 4 | $classes = ($active ?? false) 5 | ? 'block w-full ps-3 pe-4 py-2 border-l-4 border-indigo-400 text-start text-base font-medium text-indigo-700 bg-indigo-50 focus:outline-none focus:text-indigo-800 focus:bg-indigo-100 focus:border-indigo-700 transition duration-150 ease-in-out' 6 | : 'block w-full ps-3 pe-4 py-2 border-l-4 border-transparent text-start text-base font-medium text-gray-600 hover:text-gray-800 hover:bg-gray-50 hover:border-gray-300 focus:outline-none focus:text-gray-800 focus:bg-gray-50 focus:border-gray-300 transition duration-150 ease-in-out'; 7 | @endphp 8 | 9 | merge(['class' => $classes]) }}> 10 | {{ $slot }} 11 | 12 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/views/components/secondary-button.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/views/components/text-input.blade.php: -------------------------------------------------------------------------------- 1 | @props(['disabled' => false]) 2 | 3 | merge(['class' => 'border-gray-300 focus:border-indigo-500 focus:ring-indigo-500 rounded-md shadow-sm']) !!}> 4 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/resources/views/dashboard.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |

4 | {{ __('Dashboard') }} 5 |

6 |
7 | 8 |
9 |
10 |
11 |
12 | {{ __("You're logged in!") }} 13 |
14 |
15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/routes/api.php: -------------------------------------------------------------------------------- 1 | get('/user', function (Request $request) { 18 | return $request->user(); 19 | }); 20 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/routes/channels.php: -------------------------------------------------------------------------------- 1 | id === (int) $id; 18 | }); 19 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/routes/console.php: -------------------------------------------------------------------------------- 1 | comment(Inspiring::quote()); 19 | })->purpose('Display an inspiring quote'); 20 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !public/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/storage/app/public/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/storage/framework/.gitignore: -------------------------------------------------------------------------------- 1 | compiled.php 2 | config.php 3 | down 4 | events.scanned.php 5 | maintenance.php 6 | routes.php 7 | routes.scanned.php 8 | schedule-* 9 | services.json 10 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !data/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/storage/framework/cache/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/storage/framework/testing/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/tailwind.config.js: -------------------------------------------------------------------------------- 1 | import defaultTheme from 'tailwindcss/defaultTheme'; 2 | import forms from '@tailwindcss/forms'; 3 | 4 | /** @type {import('tailwindcss').Config} */ 5 | export default { 6 | content: [ 7 | './vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php', 8 | './storage/framework/views/*.php', 9 | './resources/views/**/*.blade.php', 10 | ], 11 | 12 | theme: { 13 | extend: { 14 | fontFamily: { 15 | sans: ['Figtree', ...defaultTheme.fontFamily.sans], 16 | }, 17 | }, 18 | }, 19 | 20 | plugins: [forms], 21 | }; 22 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/tests/CreatesApplication.php: -------------------------------------------------------------------------------- 1 | make(Kernel::class)->bootstrap(); 18 | 19 | return $app; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/tests/Feature/ExampleTest.php: -------------------------------------------------------------------------------- 1 | get('/'); 16 | 17 | $response->assertStatus(200); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/tests/TestCase.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /2024-01-12/laravel-htmx/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import laravel from 'laravel-vite-plugin'; 3 | 4 | export default defineConfig({ 5 | plugins: [ 6 | laravel({ 7 | input: [ 8 | 'resources/css/app.css', 9 | 'resources/js/app.js', 10 | ], 11 | refresh: true, 12 | }), 13 | ], 14 | }); 15 | -------------------------------------------------------------------------------- /2024-01-19/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/.DS_Store -------------------------------------------------------------------------------- /2024-01-19/.gitignore: -------------------------------------------------------------------------------- 1 | # Godot 4+ specific ignores 2 | .godot/ 3 | 4 | # Godot-specific ignores 5 | .import/ 6 | export.cfg 7 | export_presets.cfg 8 | 9 | # Imported translations (automatically generated from CSV files) 10 | *.translation 11 | 12 | # Mono-specific ignores 13 | .mono/ 14 | data_*/ 15 | mono_crash.*.json 16 | -------------------------------------------------------------------------------- /2024-01-19/Interstellar Runner.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/Interstellar Runner.zip -------------------------------------------------------------------------------- /2024-01-19/Package/InterstellarRunner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/Package/InterstellarRunner.gif -------------------------------------------------------------------------------- /2024-01-19/Package/InterstellarRunner.mtl: -------------------------------------------------------------------------------- 1 | # MagicaVoxel @ Ephtracy 2 | 3 | newmtl palette 4 | illum 1 5 | Ka 0.000 0.000 0.000 6 | Kd 1.000 1.000 1.000 7 | Ks 0.000 0.000 0.000 8 | map_Kd InterstellarRunner.png 9 | -------------------------------------------------------------------------------- /2024-01-19/Package/InterstellarRunner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/Package/InterstellarRunner.png -------------------------------------------------------------------------------- /2024-01-19/Package/InterstellarRunner.vox: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/Package/InterstellarRunner.vox -------------------------------------------------------------------------------- /2024-01-19/hello-world/.gitattributes: -------------------------------------------------------------------------------- 1 | # Normalize EOL for all files that Git considers text files. 2 | * text=auto eol=lf 3 | -------------------------------------------------------------------------------- /2024-01-19/hello-world/.gitignore: -------------------------------------------------------------------------------- 1 | # Godot 4+ specific ignores 2 | .godot/ 3 | -------------------------------------------------------------------------------- /2024-01-19/hello-world/project.godot: -------------------------------------------------------------------------------- 1 | ; Engine configuration file. 2 | ; It's best edited using the editor UI and not directly, 3 | ; since the parameters that go here are not all obvious. 4 | ; 5 | ; Format: 6 | ; [section] ; section goes between [] 7 | ; param=value ; assign values to parameters 8 | 9 | config_version=5 10 | 11 | [application] 12 | 13 | config/name="Hello World" 14 | config/features=PackedStringArray("4.2", "GL Compatibility") 15 | config/icon="res://icon.svg" 16 | 17 | [rendering] 18 | 19 | renderer/rendering_method="gl_compatibility" 20 | renderer/rendering_method.mobile="gl_compatibility" 21 | -------------------------------------------------------------------------------- /2024-01-19/instancing_starter/Ball.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=3 uid="uid://dm5jrnxmxnuof"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://dv6rx85s1gy3i" path="res://assets/ballBlue_10.png" id="1"] 4 | 5 | [sub_resource type="PhysicsMaterial" id="1"] 6 | bounce = 2.0 7 | 8 | [sub_resource type="CircleShape2D" id="2"] 9 | radius = 37.1452 10 | 11 | [node name="Ball" type="RigidBody2D"] 12 | physics_material_override = SubResource("1") 13 | gravity_scale = 4.0 14 | 15 | [node name="Sprite2D" type="Sprite2D" parent="."] 16 | scale = Vector2(0.5, 0.5) 17 | texture = ExtResource("1") 18 | 19 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."] 20 | shape = SubResource("2") 21 | -------------------------------------------------------------------------------- /2024-01-19/instancing_starter/Main.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | @export var Ball: PackedScene 4 | 5 | func _input(event): 6 | if event.is_action_pressed("click"): 7 | var new_ball = Ball.instantiate() 8 | new_ball.position = get_viewport().get_mouse_position() 9 | add_child(new_ball) 10 | -------------------------------------------------------------------------------- /2024-01-19/instancing_starter/README.md: -------------------------------------------------------------------------------- 1 | # Instancing project starter 2 | 3 | Used by the "Step by step" tutorial: 4 | 5 | https://docs.godotengine.org/en/latest/getting_started/step_by_step/index.html 6 | -------------------------------------------------------------------------------- /2024-01-19/instancing_starter/assets/Bouncy Platform Long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/instancing_starter/assets/Bouncy Platform Long.png -------------------------------------------------------------------------------- /2024-01-19/instancing_starter/assets/Bouncy Platform Medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/instancing_starter/assets/Bouncy Platform Medium.png -------------------------------------------------------------------------------- /2024-01-19/instancing_starter/assets/ballBlue_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/instancing_starter/assets/ballBlue_10.png -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/.DS_Store -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/.gitignore: -------------------------------------------------------------------------------- 1 | # Godot 4+ specific ignores 2 | .godot/ 3 | 4 | # Godot-specific ignores 5 | .import/ 6 | export.cfg 7 | export_presets.cfg 8 | 9 | # Imported translations (automatically generated from CSV files) 10 | *.translation 11 | 12 | # Mono-specific ignores 13 | .mono/ 14 | data_*/ 15 | mono_crash.*.json 16 | -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/ScoreLabel.gd: -------------------------------------------------------------------------------- 1 | extends Label 2 | 3 | var score = 0 4 | 5 | # Called when the node enters the scene tree for the first time. 6 | func _ready(): 7 | pass # Replace with function body. 8 | 9 | 10 | # Called every frame. 'delta' is the elapsed time since the previous frame. 11 | func _process(delta): 12 | pass 13 | 14 | func _on_mob_squashed(): 15 | score += 1 16 | text = "Score: %s" % score 17 | -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/House In a Forest Loop.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/House In a Forest Loop.ogg -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/House In a Forest Loop.ogg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="oggvorbisstr" 4 | type="AudioStreamOggVorbis" 5 | uid="uid://dt1m4xux35sxq" 6 | path="res://.godot/imported/House In a Forest Loop.ogg-1a6a72ae843ad792b7039931227e8d50.oggvorbisstr" 7 | 8 | [deps] 9 | 10 | source_file="res://art/House In a Forest Loop.ogg" 11 | dest_files=["res://.godot/imported/House In a Forest Loop.ogg-1a6a72ae843ad792b7039931227e8d50.oggvorbisstr"] 12 | 13 | [params] 14 | 15 | loop=true 16 | loop_offset=0 17 | bpm=0 18 | beat_count=0 19 | bar_beats=4 20 | -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/InterstellarRunner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/InterstellarRunner.gif -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/InterstellarRunner.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/InterstellarRunner.glb -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/InterstellarRunner.mtl: -------------------------------------------------------------------------------- 1 | # MagicaVoxel @ Ephtracy 2 | 3 | newmtl palette 4 | illum 1 5 | Ka 0.000 0.000 0.000 6 | Kd 1.000 1.000 1.000 7 | Ks 0.000 0.000 0.000 8 | map_Kd InterstellarRunner.png 9 | -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/InterstellarRunner.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | importer_version=1 5 | type="Mesh" 6 | uid="uid://ie5eek7k5bia" 7 | path="res://.godot/imported/InterstellarRunner.obj-e917c6d063da56d58f7a8515f92dfa6e.mesh" 8 | 9 | [deps] 10 | 11 | files=["res://.godot/imported/InterstellarRunner.obj-e917c6d063da56d58f7a8515f92dfa6e.mesh"] 12 | 13 | source_file="res://art/InterstellarRunner.obj" 14 | dest_files=["res://.godot/imported/InterstellarRunner.obj-e917c6d063da56d58f7a8515f92dfa6e.mesh", "res://.godot/imported/InterstellarRunner.obj-e917c6d063da56d58f7a8515f92dfa6e.mesh"] 15 | 16 | [params] 17 | 18 | generate_tangents=true 19 | scale_mesh=Vector3(1, 1, 1) 20 | offset_mesh=Vector3(0, 0, 0) 21 | optimize_mesh=true 22 | force_disable_mesh_compression=false 23 | -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/InterstellarRunner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/InterstellarRunner.png -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/InterstellarRunner.vox: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/InterstellarRunner.vox -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/InterstellarRunner_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/InterstellarRunner_0.png -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/body.material: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/body.material -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/eye.material: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/eye.material -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/mob.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/mob.glb -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/mob_body.material: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/mob_body.material -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/mob_eye.material: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/mob_eye.material -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/player.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/player.glb -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/art/pupil.material: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/art/pupil.material -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/default_bus_layout.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="AudioBusLayout" format=2] 2 | 3 | [resource] 4 | -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/default_env.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Environment" format=2] 2 | 3 | [resource] 4 | ambient_light_color = Color( 0.341176, 0.341176, 0.466667, 1 ) 5 | -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/fonts/Montserrat-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/fonts/Montserrat-Medium.ttf -------------------------------------------------------------------------------- /2024-01-19/squash_the_creeps_start_1.1.0/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-19/squash_the_creeps_start_1.1.0/icon.png -------------------------------------------------------------------------------- /2024-01-26/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-26/.DS_Store -------------------------------------------------------------------------------- /2024-01-26/books/.env.sample: -------------------------------------------------------------------------------- 1 | POSTGRES_PORT=5432 2 | POSTGRES_HOST=localhost 3 | POSTGRES_PASSWORD=postgres 4 | POSTGRES_USER=postgres 5 | POSTGRES_DB=books -------------------------------------------------------------------------------- /2024-01-26/books/.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/**/target/ 5 | !**/src/test/**/target/ 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | !**/src/main/**/build/ 30 | !**/src/test/**/build/ 31 | 32 | ### VS Code ### 33 | .vscode/ 34 | 35 | .env 36 | 37 | db-data -------------------------------------------------------------------------------- /2024-01-26/books/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.1' 2 | 3 | services: 4 | db: 5 | image: postgres:15 6 | restart: always 7 | environment: 8 | POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 9 | POSTGRES_USER: ${POSTGRES_USER} 10 | POSTGRES_DB: ${POSTGRES_DB} 11 | volumes: 12 | - ./db-data:/var/lib/postgresql/data 13 | ports: 14 | - ${POSTGRES_PORT}:5432 15 | -------------------------------------------------------------------------------- /2024-01-26/books/src/main/java/coding/garden/books/BookRepository.java: -------------------------------------------------------------------------------- 1 | package coding.garden.books; 2 | 3 | import org.springframework.data.jpa.repository.JpaRepository; 4 | 5 | interface BookRepository extends JpaRepository { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /2024-01-26/books/src/main/java/coding/garden/books/BookResourceRepository.java: -------------------------------------------------------------------------------- 1 | package coding.garden.books; 2 | 3 | import org.springframework.data.repository.CrudRepository; 4 | import org.springframework.data.repository.PagingAndSortingRepository; 5 | import org.springframework.data.rest.core.annotation.RepositoryRestResource; 6 | 7 | @RepositoryRestResource(collectionResourceRel = "book", path = "books-resource") 8 | interface BookResourceRepository extends PagingAndSortingRepository, CrudRepository { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /2024-01-26/books/src/main/java/coding/garden/books/BooksApplication.java: -------------------------------------------------------------------------------- 1 | package coding.garden.books; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class BooksApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(BooksApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /2024-01-26/books/src/main/java/coding/garden/books/WowController.java: -------------------------------------------------------------------------------- 1 | package coding.garden.books; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.ui.Model; 5 | import org.springframework.web.bind.annotation.GetMapping; 6 | import org.springframework.web.bind.annotation.RequestParam; 7 | 8 | @Controller 9 | public class WowController { 10 | 11 | @GetMapping("/wow") 12 | public String banana(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) { 13 | model.addAttribute("name", name); 14 | return "wow"; 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /2024-01-26/books/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.port=9000 2 | spring.datasource.url=jdbc:postgresql://${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB} 3 | spring.datasource.username=${POSTGRES_USER} 4 | spring.datasource.password=${POSTGRES_PASSWORD} 5 | 6 | spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true 7 | spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect 8 | 9 | # Hibernate ddl auto (create, create-drop, validate, update) 10 | spring.jpa.hibernate.ddl-auto= update 11 | 12 | -------------------------------------------------------------------------------- /2024-01-26/books/src/main/resources/templates/wow.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-01-26/books/src/main/resources/templates/wow.html -------------------------------------------------------------------------------- /2024-01-26/books/src/test/java/coding/garden/books/BooksApplicationTests.java: -------------------------------------------------------------------------------- 1 | package coding.garden.books; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BooksApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /2024-01-26/demo-resource/demo/.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/**/target/ 5 | !**/src/test/**/target/ 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | !**/src/main/**/build/ 30 | !**/src/test/**/build/ 31 | 32 | ### VS Code ### 33 | .vscode/ 34 | -------------------------------------------------------------------------------- /2024-01-26/demo-resource/demo/src/main/java/com/coding/garden/DemoApplication.java: -------------------------------------------------------------------------------- 1 | package com.coding.garden; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class DemoApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(DemoApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /2024-01-26/demo-resource/demo/src/main/java/com/coding/garden/restservice/Greeting.java: -------------------------------------------------------------------------------- 1 | package com.coding.garden.restservice; 2 | 3 | public record Greeting(long id, String content) { } 4 | -------------------------------------------------------------------------------- /2024-01-26/demo-resource/demo/src/main/java/com/coding/garden/restservice/GreetingController.java: -------------------------------------------------------------------------------- 1 | package com.coding.garden.restservice; 2 | 3 | import org.springframework.web.bind.annotation.RestController; 4 | 5 | import java.util.concurrent.atomic.AtomicLong; 6 | 7 | import org.springframework.web.bind.annotation.GetMapping; 8 | import org.springframework.web.bind.annotation.RequestParam; 9 | 10 | 11 | @RestController 12 | public class GreetingController { 13 | private static final String template = "Hello, %s!"; 14 | private final AtomicLong counter = new AtomicLong(); 15 | 16 | @GetMapping("/greeting") 17 | public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) { 18 | var greeting = new Greeting(counter.getAndIncrement(), String.format(template, name)); 19 | return greeting; 20 | } 21 | } -------------------------------------------------------------------------------- /2024-01-26/demo-resource/demo/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.port=9000 -------------------------------------------------------------------------------- /2024-01-26/demo-resource/demo/src/test/java/com/example/demo/demo/DemoApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.example.demo.demo; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class DemoApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /2024-01-26/demo/.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/**/target/ 5 | !**/src/test/**/target/ 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | !**/src/main/**/build/ 30 | !**/src/test/**/build/ 31 | 32 | ### VS Code ### 33 | .vscode/ 34 | -------------------------------------------------------------------------------- /2024-01-26/demo/src/main/java/com/example/demo/Person.java: -------------------------------------------------------------------------------- 1 | package com.example.demo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonAlias; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | 6 | public class Person { 7 | @JsonProperty("firstName") 8 | public String first_name; 9 | 10 | Person(String first_name) { 11 | this.first_name = first_name; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /2024-01-26/demo/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.port=9000 2 | server.error.whitelabel.enabled=false 3 | -------------------------------------------------------------------------------- /2024-01-26/demo/src/test/java/com/example/demo/DemoApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.example.demo; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class DemoApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /2024-02-02/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/.gitignore -------------------------------------------------------------------------------- /2024-02-02/README.md: -------------------------------------------------------------------------------- 1 | # Flutter 2 | 3 | # TODO 4 | 5 | * Review Dart Language 6 | * Setup 7 | * Add flutter to path 8 | * `export PATH="$PATH:/Users/cj/Downloads/flutter/bin"` 9 | * Build a Twitch Chat App 10 | 11 | # Impressions / What I learned 12 | 13 | * What I learned 14 | * Very similar to react 15 | * Composition of UI Elements 16 | * Way we work with State 17 | * Dart is very approachable for JS Devs 18 | * What I Did like? 19 | * Dev Tools are Amazing 20 | * hot reload is fast 21 | * What do I not like? 22 | * The way of composing widgets seems like it could get out of hand / messy 23 | * State management is a little funky 24 | * We chose a library that was slightly broken and didn't have the best docs... 25 | * Would I use Flutter again? 26 | * Maybe... 27 | * Depends on the type of app... 28 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/README.md: -------------------------------------------------------------------------------- 1 | # codinggarden_twitch_chat 2 | 3 | A new Flutter project. 4 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/app/src/main/kotlin/com/example/codinggarden_twitch_chat/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.codinggarden_twitch_chat 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.7.10' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 10 | } 11 | } 12 | 13 | allprojects { 14 | repositories { 15 | google() 16 | mavenCentral() 17 | } 18 | } 19 | 20 | rootProject.buildDir = '../build' 21 | subprojects { 22 | project.buildDir = "${rootProject.buildDir}/${project.name}" 23 | } 24 | subprojects { 25 | project.evaluationDependsOn(':app') 26 | } 27 | 28 | tasks.register("clean", Delete) { 29 | delete rootProject.buildDir 30 | } 31 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4G 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip 6 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/ios/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/linux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void fl_register_plugins(FlPluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "ephemeral/Flutter-Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "ephemeral/Flutter-Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Flutter/GeneratedPluginRegistrant.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | import FlutterMacOS 6 | import Foundation 7 | 8 | 9 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { 10 | } 11 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = codinggarden_twitch_chat 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.codinggardenTwitchChat 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2024 com.example. All rights reserved. 15 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/macos/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import FlutterMacOS 2 | import Cocoa 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: codinggarden_twitch_chat 2 | description: "A new Flutter project." 3 | publish_to: 'none' 4 | version: 0.1.0 5 | 6 | environment: 7 | sdk: '>=3.2.6 <4.0.0' 8 | 9 | dependencies: 10 | flutter: 11 | sdk: flutter 12 | twitch_chat: ^0.0.4 13 | 14 | dev_dependencies: 15 | flutter_test: 16 | sdk: flutter 17 | flutter_lints: ^2.0.0 18 | 19 | flutter: 20 | uses-material-design: true 21 | assets: 22 | - twitch_chat/.env -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/web/favicon.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/web/icons/Icon-192.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/web/icons/Icon-512.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/windows/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/windows/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void RegisterPlugins(flutter::PluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/codinggarden_twitch_chat/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /2024-02-02/codinggarden_twitch_chat/windows/runner/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_UTILS_H_ 2 | #define RUNNER_UTILS_H_ 3 | 4 | #include 5 | #include 6 | 7 | // Creates a console for the process, and redirects stdout and stderr to 8 | // it for both the runner and the Flutter library. 9 | void CreateAndAttachConsole(); 10 | 11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string 12 | // encoded in UTF-8. Returns an empty std::string on failure. 13 | std::string Utf8FromUtf16(const wchar_t* utf16_string); 14 | 15 | // Gets the command line arguments passed in as a std::vector, 16 | // encoded in UTF-8. Returns an empty std::vector on failure. 17 | std::vector GetCommandLineArguments(); 18 | 19 | #endif // RUNNER_UTILS_H_ 20 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/README.md: -------------------------------------------------------------------------------- 1 | # my_first_app 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 13 | 14 | For help getting started with Flutter development, view the 15 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/app/src/main/kotlin/com/example/my_first_app/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.my_first_app 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.7.10' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 10 | } 11 | } 12 | 13 | allprojects { 14 | repositories { 15 | google() 16 | mavenCentral() 17 | } 18 | } 19 | 20 | rootProject.buildDir = '../build' 21 | subprojects { 22 | project.buildDir = "${rootProject.buildDir}/${project.name}" 23 | } 24 | subprojects { 25 | project.evaluationDependsOn(':app') 26 | } 27 | 28 | tasks.register("clean", Delete) { 29 | delete rootProject.buildDir 30 | } 31 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4G 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip 6 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/ios/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/linux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void fl_register_plugins(FlPluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "ephemeral/Flutter-Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "ephemeral/Flutter-Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Flutter/GeneratedPluginRegistrant.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | import FlutterMacOS 6 | import Foundation 7 | 8 | 9 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { 10 | } 11 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = my_first_app 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.myFirstApp 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2024 com.example. All rights reserved. 15 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/macos/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import FlutterMacOS 2 | import Cocoa 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/web/favicon.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/web/icons/Icon-192.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/web/icons/Icon-512.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /2024-02-02/my_first_app/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/windows/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/windows/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void RegisterPlugins(flutter::PluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /2024-02-02/my_first_app/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-02/my_first_app/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /2024-02-02/my_first_app/windows/runner/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_UTILS_H_ 2 | #define RUNNER_UTILS_H_ 3 | 4 | #include 5 | #include 6 | 7 | // Creates a console for the process, and redirects stdout and stderr to 8 | // it for both the runner and the Flutter library. 9 | void CreateAndAttachConsole(); 10 | 11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string 12 | // encoded in UTF-8. Returns an empty std::string on failure. 13 | std::string Utf8FromUtf16(const wchar_t* utf16_string); 14 | 15 | // Gets the command line arguments passed in as a std::vector, 16 | // encoded in UTF-8. Returns an empty std::vector on failure. 17 | std::vector GetCommandLineArguments(); 18 | 19 | #endif // RUNNER_UTILS_H_ 20 | -------------------------------------------------------------------------------- /2024-02-09/README.md: -------------------------------------------------------------------------------- 1 | # Redis Queues 2 | 3 | View the codes [here](./app/packages/) 4 | 5 | ![app-diagram](./app-diagram.png) -------------------------------------------------------------------------------- /2024-02-09/app-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-09/app-diagram.png -------------------------------------------------------------------------------- /2024-02-09/app/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.1' 2 | 3 | services: 4 | redis: 5 | image: bitnami/redis:latest 6 | restart: always 7 | ports: 8 | - ${REDIS_PORT_NUMBER}:${REDIS_PORT_NUMBER} 9 | environment: 10 | REDIS_PASSWORD: ${REDIS_PASSWORD} 11 | REDIS_USERNAME: ${REDIS_USERNAME} 12 | REDIS_PORT_NUMBER: ${REDIS_PORT_NUMBER} 13 | -------------------------------------------------------------------------------- /2024-02-09/app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "app", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "dev": "npm -w packages/web run dev" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "workspaces": [ 13 | "packages/*" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/data-cacher/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "data-cacher", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "tsx src/index.ts" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "bullmq": "^5.1.9", 14 | "redis-connection": "*", 15 | "tsx": "^4.7.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/data-cacher/src/index.ts: -------------------------------------------------------------------------------- 1 | import { Worker } from "bullmq"; 2 | import { Names } from "redis-connection/src/constants"; 3 | import redis from "redis-connection/src/redis"; 4 | 5 | console.log("Listening for cache jobs..."); 6 | 7 | const worker = new Worker( 8 | Names.pokemon, 9 | async (job) => { 10 | console.log("New job!", job.id); 11 | await new Promise((resolve) => setTimeout(() => resolve(null), 5000)); 12 | const response = await fetch( 13 | "https://pokeapi.co/api/v2/pokemon?limit=1500" 14 | ); 15 | const text = await response.text(); 16 | // REDIS Lock?? 17 | await redis.set(Names.pokemon, text, "EX", 10); 18 | console.log("Job done!"); 19 | }, 20 | { 21 | connection: redis, 22 | } 23 | ); 24 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/redis-connection/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "redis-connection", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "bullmq": "^5.1.9", 14 | "dotenv": "^16.4.1" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/redis-connection/src/constants.ts: -------------------------------------------------------------------------------- 1 | export const Names = { 2 | pokemon: 'pokemon-cache', 3 | } as const; 4 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/redis-connection/src/queues.ts: -------------------------------------------------------------------------------- 1 | import { Queue } from 'bullmq'; 2 | import redis from './redis'; 3 | import { Names } from './constants'; 4 | 5 | export const pokemonQueue = new Queue(Names.pokemon, { connection: redis }); 6 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/redis-connection/src/redis.ts: -------------------------------------------------------------------------------- 1 | import Redis from 'ioredis'; 2 | import { config } from 'dotenv'; 3 | 4 | config(); 5 | 6 | const { 7 | REDIS_HOST: host, 8 | REDIS_PORT_NUMBER: port, 9 | REDIS_USERNAME: username, 10 | REDIS_PASSWORD: password, 11 | REDIS_DB: db 12 | } = process.env; 13 | 14 | const redis = new Redis({ 15 | port, 16 | host, 17 | username, 18 | password, 19 | db: Number(db), 20 | maxRetriesPerRequest: null, 21 | }); 22 | 23 | export default redis; 24 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/.eslintignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /** @type { import("eslint").Linter.Config } */ 2 | module.exports = { 3 | root: true, 4 | extends: [ 5 | 'eslint:recommended', 6 | 'plugin:@typescript-eslint/recommended', 7 | 'plugin:svelte/recommended', 8 | 'prettier' 9 | ], 10 | parser: '@typescript-eslint/parser', 11 | plugins: ['@typescript-eslint'], 12 | parserOptions: { 13 | sourceType: 'module', 14 | ecmaVersion: 2020, 15 | extraFileExtensions: ['.svelte'] 16 | }, 17 | env: { 18 | browser: true, 19 | es2017: true, 20 | node: true 21 | }, 22 | overrides: [ 23 | { 24 | files: ['*.svelte'], 25 | parser: 'svelte-eslint-parser', 26 | parserOptions: { 27 | parser: '@typescript-eslint/parser' 28 | } 29 | } 30 | ] 31 | }; 32 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | .vercel 12 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore files for PNPM, NPM and YARN 2 | pnpm-lock.yaml 3 | package-lock.json 4 | yarn.lock 5 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte"], 7 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 8 | } 9 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface PageState {} 9 | // interface Platform {} 10 | } 11 | } 12 | 13 | export {}; 14 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | %sveltekit.head% 9 | 10 | 11 |
%sveltekit.body%
12 | 13 | 14 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | // place files you want to import through the `$lib` alias in this folder. 2 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/src/lib/server/redis-connection/src/constants.ts: -------------------------------------------------------------------------------- 1 | export const Names = { 2 | pokemon: 'pokemon-cache', 3 | } as const; 4 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/src/lib/server/redis-connection/src/queues.ts: -------------------------------------------------------------------------------- 1 | import { Queue } from 'bullmq'; 2 | import redis from './redis'; 3 | import { Names } from './constants'; 4 | 5 | export const pokemonQueue = new Queue(Names.pokemon, { connection: redis }); 6 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/src/lib/server/redis-connection/src/redis.ts: -------------------------------------------------------------------------------- 1 | import Redis from 'ioredis'; 2 | import { config } from 'dotenv'; 3 | 4 | config(); 5 | 6 | const { 7 | REDIS_HOST: host, 8 | REDIS_PORT_NUMBER: port, 9 | REDIS_USERNAME: username, 10 | REDIS_PASSWORD: password, 11 | REDIS_DB: db 12 | } = process.env; 13 | 14 | const redis = new Redis({ 15 | port, 16 | host, 17 | username, 18 | password, 19 | db: Number(db), 20 | maxRetriesPerRequest: null, 21 | }); 22 | 23 | export default redis; 24 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingGarden/tryday-friday/41364e7e0bee6c8a3d63ec935222c928bdb411ff/2024-02-09/app/packages/web/static/favicon.png -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 7 | // for more information about preprocessors 8 | preprocess: vitePreprocess(), 9 | 10 | kit: { 11 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 12 | // If your environment is not supported or you settled on a specific environment, switch out the adapter. 13 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 14 | adapter: adapter() 15 | } 16 | }; 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true, 12 | "moduleResolution": "bundler" 13 | } 14 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 15 | // 16 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 17 | // from the referenced tsconfig.json - TypeScript does not merge them in 18 | } 19 | -------------------------------------------------------------------------------- /2024-02-09/app/packages/web/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vite'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()] 6 | }); 7 | --------------------------------------------------------------------------------