{"id":26111250,"url":"https://github.com/bader-idris/nuxt3-fullstack-portfolio","last_synced_at":"2025-04-12T22:36:41.777Z","repository":{"id":279855502,"uuid":"939550065","full_name":"Bader-Idris/nuxt3-fullstack-portfolio","owner":"Bader-Idris","description":"A production-ready, fully containerized full-stack application. It includes an authorized email service (postfix\u0026dovecot), MongoDB, PostgreSQL, Redis, Certbot (SSL CA), Socket.io, and Nginx. Additionally, it is distributable on CapacitorJS.","archived":false,"fork":false,"pushed_at":"2025-04-02T15:55:13.000Z","size":5573,"stargazers_count":16,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"bader","last_synced_at":"2025-04-02T16:48:25.370Z","etag":null,"topics":["bun","certbot","ddos-protection","docker","docker-compose","fail2ban","full-stack","mongodb","mongoose","nitro","nuxt3","psql","web-application"],"latest_commit_sha":null,"homepage":"https://baderidris.com","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Bader-Idris.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":"BaderIdris","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2025-02-26T18:08:30.000Z","updated_at":"2025-04-02T15:55:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"7a4e8812-4f5f-4789-b0e2-7dcb60016c34","html_url":"https://github.com/Bader-Idris/nuxt3-fullstack-portfolio","commit_stats":null,"previous_names":["bader-idris/nuxt3-fullstack-portfolio"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bader-Idris%2Fnuxt3-fullstack-portfolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bader-Idris%2Fnuxt3-fullstack-portfolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bader-Idris%2Fnuxt3-fullstack-portfolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bader-Idris%2Fnuxt3-fullstack-portfolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bader-Idris","download_url":"https://codeload.github.com/Bader-Idris/nuxt3-fullstack-portfolio/tar.gz/refs/heads/bader","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248642947,"owners_count":21138352,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bun","certbot","ddos-protection","docker","docker-compose","fail2ban","full-stack","mongodb","mongoose","nitro","nuxt3","psql","web-application"],"created_at":"2025-03-10T01:49:40.005Z","updated_at":"2025-04-12T22:36:41.772Z","avatar_url":"https://github.com/Bader-Idris.png","language":"Vue","funding_links":["https://patreon.com/BaderIdris"],"categories":[],"sub_categories":[],"readme":"# Nuxt Minimal Starter\r\n\r\n[![project img](https://raw.githubusercontent.com/Bader-Idris/nuxt3-fullstack-portfolio/26e3f86aaa361639f25b0ce933df59ea982e5e41/client/public/thumbnail.webp)](https://baderidris.com)\r\n\r\nWelcome to the Nuxt Minimal Starter! This repository provides a foundational setup for a full-stack application using Nuxt 3, along with various useful Docker containers. For more detailed information, refer to the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction).\r\n\r\n## Table of Contents\r\n\r\n- [Setup](#setup)\r\n- [Development Server](#development-server)\r\n- [Production](#production)\r\n- [Mobile Application Setup](#mobile-application-setup)\r\n- [Required Environment Variables](#required-environment-variables)\r\n- [Production Setup](#production-setup)\r\n- [Security](#security)\r\n\r\n## Setup\r\n\r\n\u003e [!IMPORTANT]  \r\n\u003e Ensure that you have [Bun](https://bun.sh/) installed on your machine.\r\n\r\nInstall the necessary dependencies:\r\n\r\n```bash\r\nbun install\r\n```\r\n\r\n## Development Server\r\n\r\nTo start the development server, navigate to `http://localhost:3000`:\r\n\r\n```bash\r\nbun run dev\r\n```\r\n\r\n## Production\r\n\r\nTo build the application for production, run:\r\n\r\n```bash\r\nbun run build\r\n```\r\n\r\n\u003e [!WARNING]  \r\n\u003e If you're trying to build the app on a weak server with limited resources, please follow the instructions in the [weak_servers.md](./weak_servers.md) file to ensure a successful build process.\r\n\r\nTo locally preview the production build:\r\n\r\n```bash\r\nbun run preview\r\n```\r\n\r\n### Docker Configuration\r\n\r\nRefer to the `b.dev.yml` file to set up your full-stack application.\r\n\r\n1. Create a new `.env` file based on the `.env.example` file and fill in your correct environment variables.\r\n2. Run the following command to start your Docker containers:\r\n\r\n```bash\r\ndocker compose -f b.dev.yml up -d --build\r\n```\r\n\r\nCongratulations! 🎉👏 You are now running your own full-stack production-ready initial version of the project!\r\n\r\n### Domain Configuration\r\n\r\nMake sure to update the domain name `baderidris.com` in the `b.dev.yml` file and its associated configuration files to your own domain name.\r\n\r\n## Mobile Application Setup\r\n\r\nTo add Android and iOS support, create the respective directories in your project:\r\n\r\n```bash\r\nbunx cap add android ios\r\n```\r\n\r\n### Adding App Icons\r\n\r\nTo customize your app icons, modify the icons in the `/assets` folder as desired, then run:\r\n\r\n```bash\r\nbunx capacitor-assets generate --assetPath \"./assets\" --ios --android\r\n```\r\n\r\n\u003e You can review the configuration requirements in the `assets/requirements.md` file.\r\n\r\n### Building the Android App\r\n\r\nTo build the Android app, ensure you have [Android Studio](https://developer.android.com/studio/install) installed on your machine and set the required environment variables.\r\n\r\n\u003e [!CAUTION]  \r\n\u003e Restart your shell session after adding the environment variables.\r\n\r\nKey environment variables include:\r\n\r\n- `ANDROID_HOME`\r\n- `CAPACITOR_ANDROID_STUDIO_PATH`\r\n\r\n## Required Environment Variables\r\n\r\n\u003e [!CAUTION]  \r\n\u003e Modify the values in the `.env` file to reflect your specific configuration.\r\n\r\nTo create your `.env` file, rename the existing example file:\r\n\r\n```bash\r\nmv .env.example .env\r\n```\r\n\r\n\u003e [!CAUTION]  \r\n\u003e If you are using Windows, ensure that you install Git and use Git Bash for an improved development experience.\r\n\r\n## Production Setup\r\n\r\n\u003e [!IMPORTANT]  \r\n\u003e Ensure that Docker is installed on your machine.\r\n\r\nTo initiate the production setup, run the following command at the project root level:\r\n\r\n```bash\r\ndocker compose -f ./a.prod-certbot.yml up -d --build\r\n```\r\n\r\nAfterward, you will need to force Certbot to renew certificates to remove the `--staging` flag. It is recommended to create a separate compose file for this purpose and for future renewals.\r\n\r\n\u003e [!IMPORTANT]  \r\n\u003e replicas and docker swarm concerns\r\n\r\nYou have to name the root project dir as `portfolio` or change `server/config/nginx/nginx_with_certbot_secured.conf` file =\u003e upstream servers based on your container name?s or outer ip address?es\r\n\r\n### Setting Up Cron for Certificate Renewal\r\n\r\nTo automate certificate renewals, create a cron job by modifying the paths in the `/server/config/nginx/ssl_renew.sh` file, then add this file to your crontab:\r\n\r\n```bash\r\n# To edit your crontab, run:\r\ncrontab -e\r\n\r\n# Add the following line to schedule the renewal script:\r\n0 12 * * * /home/bader/portfolio/server/config/nginx/ssl_renew.sh \u003e\u003e /var/log/cron.log 2\u003e\u00261\r\n```\r\n\r\n\u003e [!TIP]  \r\n\u003e Review the `ssl_renew.sh` file for additional useful tips and configurations.\r\n\r\n## Security\r\n\r\nTo enhance the security of your application and prevent common attacks such as DDoS, we have implemented Fail2Ban.\r\n\r\nThe following files are included in the configuration:\r\n\r\n```bash\r\nls server/config/fail2ban/\r\ndirectory =\u003e filter.d\r\nfile =\u003e my_custom_jail.local\r\n```\r\n\r\n### Custom Jails and Filters\r\n\r\nWe have created custom jails and filters to allow users to add their configurations after installing the tool. This flexibility helps you tailor the security settings to your specific needs.\r\n\r\n---\r\n\r\nThank you for using the Nuxt Minimal Starter! If you have any questions or need further assistance, feel free to reach out.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbader-idris%2Fnuxt3-fullstack-portfolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbader-idris%2Fnuxt3-fullstack-portfolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbader-idris%2Fnuxt3-fullstack-portfolio/lists"}