{"id":50276811,"url":"https://github.com/mysbryce/monospace","last_synced_at":"2026-05-27T21:02:10.666Z","repository":{"id":342590048,"uuid":"1158371149","full_name":"mysbryce/monospace","owner":"mysbryce","description":"Manage your FiveM NUI project easier with this one thing","archived":false,"fork":false,"pushed_at":"2026-03-06T14:14:20.000Z","size":238,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-06T17:37:44.163Z","etag":null,"topics":["fivem","monorepo","nui"],"latest_commit_sha":null,"homepage":"https://monospace-docs.e2ends.xyz/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mysbryce.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":"2026-02-15T08:53:29.000Z","updated_at":"2026-03-06T15:23:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mysbryce/monospace","commit_stats":null,"previous_names":["mysbryce/monospace"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mysbryce/monospace","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysbryce%2Fmonospace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysbryce%2Fmonospace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysbryce%2Fmonospace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysbryce%2Fmonospace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mysbryce","download_url":"https://codeload.github.com/mysbryce/monospace/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysbryce%2Fmonospace/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33583399,"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-27T02:00:06.184Z","response_time":53,"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":["fivem","monorepo","nui"],"created_at":"2026-05-27T21:02:09.563Z","updated_at":"2026-05-27T21:02:10.660Z","avatar_url":"https://github.com/mysbryce.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![(Monospace Thumbnail)\\[\\]](https://i.ibb.co/N6zWrDfW/monospace-thumbnail.jpg)\n\n# Monospace\n\nA monorepo for developing FiveM NUI interfaces. Built with Bun, Turborepo, Preact, Vite, and Tailwind CSS -- providing shared configurations, UI utilities, and a consistent development workflow across multiple NUI projects.\n\n## Tech Stack\n\n- **Runtime / Package Manager** -- [Bun](https://bun.sh)\n- **Monorepo Orchestration** -- [Turborepo](https://turbo.build)\n- **UI Framework** -- [Preact](https://preactjs.com)\n- **Bundler** -- [Vite](https://vite.dev)\n- **Styling** -- [Tailwind CSS v3](https://tailwindcss.com)\n- **Linting / Formatting** -- [Biome](https://biomejs.dev)\n- **Schema Validation** -- [Zod](https://zod.dev)\n- **Language** -- TypeScript\n\n## Project Structure\n\n```\nmonospace/\n  apps/\n    example/          # Reference NUI app demonstrating the shared packages\n  packages/\n    biome-config/     # Shared Biome linter and formatter configuration\n    tailwind-config/  # Shared Tailwind CSS, PostCSS config, and base styles\n    typescript-config/ # Shared TypeScript compiler configurations\n    ui/               # Shared UI components and utilities\n    vite-config/      # Shared Vite build configuration (Preact preset, base path)\n```\n\n## Shared Packages\n\nAll packages are published under the `@repo/*` scope and consumed via workspace linking.\n\n| Package | Description |\n|---|---|\n| `@repo/biome-config` | Centralized Biome rules (recommended ruleset, tab indentation, 120-char line width) |\n| `@repo/tailwind-config` | Shared Tailwind config, PostCSS config, and a base stylesheet |\n| `@repo/typescript-config` | Reusable `tsconfig` base files |\n| `@repo/ui` | Preact components (e.g. `Button`) and utilities (`cn`, `fetch`, `useEvent`, `useValidatedEvent`) |\n| `@repo/vite-config` | Pre-configured Vite setup with the Preact preset and relative base path for NUI embedding |\n\n## Getting Started\n\n### Prerequisites\n\n- [Bun](https://bun.sh) v1.3.4 or later\n- Node.js \u003e= 18\n\n### Install dependencies\n\n```bash\nbun install\n```\n\n### Development\n\nStart all apps in development mode:\n\n```bash\nbun run dev\n```\n\n### Build\n\nBuild all apps for production:\n\n```bash\nbun run build\n```\n\n### Linting and Formatting\n\n```bash\n# Biome check (lint + format)\nbun run format-and-lint\n\n# Biome check with auto-fix\nbun run format-and-lint:fix\n\n# Prettier (markdown and TypeScript files)\nbun run format\n```\n\n### Type Checking\n\n```bash\nbun run check-types\n```\n\n## Creating a New NUI App\n\n1. Create a new directory under `apps/`.\n2. Add a `package.json` referencing the shared packages:\n   ```json\n   {\n     \"devDependencies\": {\n       \"@repo/vite-config\": \"workspace:*\",\n       \"@repo/biome-config\": \"workspace:*\",\n       \"@repo/tailwind-config\": \"workspace:*\",\n       \"@repo/typescript-config\": \"workspace:*\"\n     },\n     \"dependencies\": {\n       \"@repo/ui\": \"workspace:*\"\n     }\n   }\n   ```\n3. Import the shared Vite config in your `vite.config.ts`:\n   ```ts\n   import { preactConfig } from \"@repo/vite-config\";\n   import { defineConfig, type UserConfig } from \"vite\";\n\n   export default defineConfig({\n     ...(preactConfig as UserConfig),\n   });\n   ```\n4. Reference the shared Tailwind config in your `tailwind.config.js`:\n   ```js\n   export { default } from \"@repo/tailwind-config/tailwind\";\n   ```\n5. Run `bun install` and start development with `bun run dev`.\n\n## Using the UI Package\n\nImport components and utilities directly from `@repo/ui`:\n\n```tsx\nimport { Button } from \"@repo/ui/components/button\";\nimport { cn } from \"@repo/ui/utils/cn\";\nimport { useValidatedEvent } from \"@repo/ui/utils/useValidatedEvent\";\n```\n\n## License\n\nThis project is licensed under the [GNU General Public License v3.0](./LICENSE). See the `LICENSE` file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmysbryce%2Fmonospace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmysbryce%2Fmonospace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmysbryce%2Fmonospace/lists"}