{"id":26015903,"url":"https://github.com/filipebraida/adonisjs-starter-kit","last_synced_at":"2026-05-29T08:32:21.538Z","repository":{"id":279439134,"uuid":"938820171","full_name":"filipebraida/adonisjs-starter-kit","owner":"filipebraida","description":"Starter kit for AdonisJS projects using a monorepo setup","archived":false,"fork":false,"pushed_at":"2026-04-04T14:55:08.000Z","size":7236,"stargazers_count":79,"open_issues_count":1,"forks_count":10,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-04T16:57:29.880Z","etag":null,"topics":["adonisjs","monorepo","react","shadcn-ui","tailwindcss"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/filipebraida.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-25T14:55:52.000Z","updated_at":"2026-03-15T07:27:20.000Z","dependencies_parsed_at":"2025-02-25T15:44:58.424Z","dependency_job_id":"56360ebb-14aa-4901-834b-dfae4e94d974","html_url":"https://github.com/filipebraida/adonisjs-starter-kit","commit_stats":null,"previous_names":["filipebraida/adonisjs-starter-kit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/filipebraida/adonisjs-starter-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filipebraida%2Fadonisjs-starter-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filipebraida%2Fadonisjs-starter-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filipebraida%2Fadonisjs-starter-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filipebraida%2Fadonisjs-starter-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/filipebraida","download_url":"https://codeload.github.com/filipebraida/adonisjs-starter-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filipebraida%2Fadonisjs-starter-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33644295,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adonisjs","monorepo","react","shadcn-ui","tailwindcss"],"created_at":"2025-03-06T03:51:44.947Z","updated_at":"2026-05-29T08:32:21.523Z","avatar_url":"https://github.com/filipebraida.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AdonisJS Starter Kit\n\nAdonisJS Starter Kit is a monorepo-based template for developing full-stack applications with AdonisJS. It combines AdonisJS, Inertia.js, Tuyau, a shared UI package based on shadcn/ui, Tailwind CSS, and PostgreSQL to help you bootstrap production-ready applications faster.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/filipebraida/adonisjs-starter-kit/main/.github/demo.gif\" alt=\"Demo\" width=\"600\" /\u003e\n\u003c/p\u003e\n\n## Features\n\n- **Monorepo Setup**: Efficient package management and build processes powered by TurboRepo and pnpm.\n- **Shared UI Package**: Reusable and customizable components provided by `@workspace/ui`, built on top of shadcn/ui.\n- **Frontend Integration**: Inertia.js delivers a modern single-page application (SPA) experience.\n- **Type-safe Routing \u0026 API Client**: Tuyau provides route-aware URLs and type-safe client calls.\n- **Styling**: Rapid and responsive UI development using Tailwind CSS.\n- **Database**: PostgreSQL ensures robust, scalable, and high-performance data storage.\n- **User Management**: Comprehensive user management system.\n- **Authorization \u0026 Authentication**: Secure access control mechanisms.\n- **Password Recovery**: Built-in functionality for password reset and recovery.\n- **Social Authentication**: Easily authenticate users via social providers (Google, GitHub, etc.) using the [@adonisjs/ally package](https://docs.adonisjs.com/guides/authentication/social-authentication).\n- **User Impersonation**: Administrators can temporarily assume any user's identity for support or testing purposes.\n- **API Tokens**: Users can generate and revoke personal access tokens for use in APIs.\n- **i18n Support**: Built-in internationalization with default support for English and Portuguese using [@adonisjs/i18n](https://docs.adonisjs.com/guides/i18n).\n- **Appearance Settings**: Comprehensive controls for Theme (Light/Dark), Layout (Sidebar/Header), Sidebar variants, and Direction (LTR/RTL), with local persistence.\n\n## Tools and Technologies\n\n- **TurboRepo**: Monorepo management and build caching.\n- **pnpm**: Fast and efficient package management.\n- **shadcn/ui**: Baseline for the shared UI package.\n- **Inertia.js**: Seamless integration between frontend and backend.\n- **Tuyau**: Type-safe route generation and API client integration.\n- **Tailwind CSS**: Utility-first CSS framework for rapid styling.\n- **PostgreSQL**: Reliable and high-performance relational database.\n- **Mailpit**: Small, fast, low memory, zero-dependency, multi-platform email testing tool \u0026 API for developers.\n- **PgAdmin**: Most popular and feature rich Open Source administration and development platform for PostgreSQL.\n\n## Requirements\n\n- Node.js `\u003e=24`\n- pnpm `10.33.0` — install with `npm install -g pnpm@10.33.0`\n\n## Installation\n\n### Cloning the Repository\n\nTo create a new project using this starter kit, run:\n\n```bash\npnpm create adonisjs@latest -K=\"filipebraida/adonisjs-starter-kit\"\n```\n\nOr, if cloning directly:\n\n```bash\ngit clone https://github.com/filipebraida/adonisjs-starter-kit.git\ncd adonisjs-starter-kit\npnpm install\n```\n\n### Setting Up the Environment\n\n1. **Copy the Example Environment File**  \n   Duplicate the example file to create your own environment configuration.\n\n```bash\ncp apps/web/.env.example apps/web/.env\n```\n\n\u003e **Note:** Some features (email, social auth, file storage) are optional but their environment variables must still be present with placeholder values due to startup validation. The `.env.example` file already includes all required placeholders.\n\n2. **Generate the App Key**  \n   Generate a cryptographically secure key and assign it to the `APP_KEY` environment variable.\n\n```bash\nnode apps/web/ace generate:key\n```\n\n3. **Configure Social Auth \u0026 Email**\n   Social authentication and email settings can be configured later as needed.\n\n### Database Setup\n\nThe project includes a Dockerfile that automatically initializes the necessary configurations using your environment variables. To set up the database:\n\n1. **Start the Database with Docker**  \n   Launch the database container:\n\n```bash\ndocker compose up -d\n```\n\n2. **Run Migrations**  \n   Apply all migrations to create the database schema:\n\n```bash\npnpm --filter web exec node ace migration:run\n```\n\n3. **Seed the Database**  \n   Populate the database with initial data (e.g., default users and roles):\n\n```bash\npnpm --filter web exec node ace db:seed\n```\n\n## Running the Development Server\n\nStart the development server with the following command:\n\n```bash\npnpm run dev\n```\n\nThis command launches the AdonisJS server along with any associated applications.\n\n## Project Structure\n\n```bash\n    root/\n    ├── apps/\n    │   └── web/        # Backend and frontend application using AdonisJS with Inertia.js\n    ├── packages/       # Shared packages and utilities\n    ├── pnpm-workspace.yaml  # Monorepo configuration\n    └── turbo.json      # TurboRepo configuration\n```\n\nThis project follows a monorepo architecture using **TurboRepo**. Here's a quick breakdown of the structure:\n\n- **apps/** contains runnable applications. In this case, `web/` is the full-stack AdonisJS application, including both backend and frontend (via Inertia.js).\n- **packages/** holds shared libraries and tooling, such as the shared UI package and shared lint/type configurations.\n- **pnpm-workspace.yaml** defines the workspace boundaries.\n- **turbo.json** configures TurboRepo pipelines for tasks like build, lint, test, and dev.\n\nThis modular design allows you to isolate features, enforce code reuse, and scale your architecture with clarity. For example, you can add more apps in `apps/` or extract common logic into `packages/` as your project grows.\n\n## Feature-based Organization\n\nThe `apps/web` application follows a feature-based structure inside the `app/` directory. Instead of grouping files only by technical type, the codebase is organized by domain areas such as `auth`, `users`, `marketing`, `common`, and `core`.\n\nThis approach keeps related controllers, validators, UI components, hooks, routes, and supporting files close to each other, which makes the project easier to navigate and scale over time.\n\nFor example, a feature can look like this:\n\n```bash\napps/web/app/\n├── auth/\n│   ├── controllers/\n│   ├── middleware/\n│   ├── routes.ts\n│   └── ui/\n├── users/\n│   ├── controllers/\n│   ├── policies/\n│   ├── routes.ts\n│   ├── validators.ts\n│   └── ui/\n```\n\nThis structure is a project convention and does not depend on an external modules package.\n\n## Adding a New Component\n\nThe shared UI package lives in `packages/ui` and uses `components.json` as the shadcn/ui source of truth.\n\nTo add a new base component, run from the repository root:\n\n```bash\npnpm dlx shadcn@latest add button --cwd packages/ui\n```\n\nThis command updates files inside `packages/ui`. Custom project-specific components such as `field`, `password-input`, `copy-button`, and `data-table` are maintained manually on top of that base.\n\n## Libraries Used\n\nThis starter kit makes use of the following libraries to support file handling, SPA integration, type-safe routing, and structured data flow. Refer to their documentation for more details:\n\n- [@jrmc/adonis-attachment](https://github.com/batosai/adonis-attachment)\n- [@tuyau/inertia](https://github.com/Julien-R44/tuyau)\n- [@adocasts.com/dto](https://github.com/adocasts/package-dto)\n\n## Inspirations\n\nThis project draws inspiration from the following sources:\n\n- [ShadCN UI](https://ui.shadcn.com/)\n- [AdonisJS Starter Kit by Batosai](https://github.com/batosai/adonis-starter-kit)\n- [ShadCN Blocks](https://www.shadcnblocks.com/)\n- [ShadCN Admin by Satnaing](https://github.com/satnaing/shadcn-admin)\n- [Laravel React Starter Kit](https://github.com/laravel/react-starter-kit)\n\n## Contributing\n\nContributions are welcome! Please feel free to open issues or submit pull requests with improvements and suggestions to enhance this starter kit.\n\n**Contributors:** [Sayed Ahmed](https://github.com/sayeed205), [Lupiac](https://github.com/Lupiac) and [Corentin Clichy](https://github.com/corentinclichy)\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilipebraida%2Fadonisjs-starter-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffilipebraida%2Fadonisjs-starter-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilipebraida%2Fadonisjs-starter-kit/lists"}