{"id":43250925,"url":"https://github.com/cod3ddot/cod3d.dev","last_synced_at":"2026-02-01T13:05:38.610Z","repository":{"id":245966645,"uuid":"631750208","full_name":"Cod3dDOT/cod3d.dev","owner":"Cod3dDOT","description":"Personal website for fun stuff","archived":false,"fork":false,"pushed_at":"2025-10-20T05:49:12.000Z","size":11832,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-20T08:28:46.922Z","etag":null,"topics":["nextjs","pocketbase","tailwindcss"],"latest_commit_sha":null,"homepage":"https://cod3d.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cod3dDOT.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":"2023-04-24T01:14:06.000Z","updated_at":"2025-10-20T05:49:16.000Z","dependencies_parsed_at":"2024-07-30T06:16:34.746Z","dependency_job_id":"d9235a3e-408f-4fb4-80b8-1afa5fccd543","html_url":"https://github.com/Cod3dDOT/cod3d.dev","commit_stats":null,"previous_names":["cod3ddot/cod3d.dev"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Cod3dDOT/cod3d.dev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cod3dDOT%2Fcod3d.dev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cod3dDOT%2Fcod3d.dev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cod3dDOT%2Fcod3d.dev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cod3dDOT%2Fcod3d.dev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cod3dDOT","download_url":"https://codeload.github.com/Cod3dDOT/cod3d.dev/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cod3dDOT%2Fcod3d.dev/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28978788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T12:13:08.691Z","status":"ssl_error","status_checked_at":"2026-02-01T12:13:08.356Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["nextjs","pocketbase","tailwindcss"],"created_at":"2026-02-01T13:05:33.096Z","updated_at":"2026-02-01T13:05:38.603Z","avatar_url":"https://github.com/Cod3dDOT.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![cod3d.dev](./docs/github-header.gif)](https://github.com/cod3ddot/cod3d.dev)\n\n\u003cdiv align=\"center\"\u003e\n  \u003c!-- Apache 2.0 License Badge --\u003e\n  \u003ca href=\"https://www.apache.org/licenses/LICENSE-2.0\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Apache%202.0-blue.svg?style=for-the-badge\u0026logo=apache\" alt=\"License: Apache 2.0\" /\u003e\n  \u003c/a\u003e\n\n  \u003c!-- Hosting: Cloudflare --\u003e\n  \u003ca href=\"https://www.cloudflare.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Cloudflare-F38020?style=for-the-badge\u0026logo=cloudflare\u0026logoColor=white\" alt=\"Hosted on Cloudflare\" /\u003e\n  \u003c/a\u003e\n\n  \u003c!-- Built with: Next.js --\u003e\n  \u003ca href=\"https://nextjs.org\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Next.js-000000?style=for-the-badge\u0026logo=next.js\u0026logoColor=white\" alt=\"Built with Next.js\" /\u003e\n  \u003c/a\u003e\n\n  \u003c!-- Built with: Tailwind CSS --\u003e\n  \u003ca href=\"https://tailwindcss.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Tailwind-00bdff?style=for-the-badge\u0026logo=tailwindcss\u0026logoColor=white\" alt=\"Styled with Tailwind CSS\" /\u003e\n  \u003c/a\u003e\n\n  \u003c!-- Built with: PocketBase --\u003e\n  \u003ca href=\"https://pocketbase.io\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/PocketBase-3c3c3c?style=for-the-badge\u0026logo=pocketbase\u0026logoColor=white\" alt=\"Backend: PocketBase\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\n# cod3d.dev\n\nPersonal website and blog built with Next.js v15, TailwindCSS v4, and PocketBase.\n\nHome: [cod3d.dev](https://cod3d.dev)\n\nAnalytics: [analytics.cod3d.dev](https://analytics.cod3d.dev)\n\n## Sitemap\n\n```\n├── /                    # Landing page\n├── thoughts/\n│   └── [article]/       # Article page\n│       └── download/    # Article download endpoint\n├── feed.xml             # RSS feed\n├── sitemap.xml          # Sitemap\n├── pgp-key.txt          # PGP to verify ownership\n├── security.txt         # See https://securitytxt.org/, signed using pgp-key.txt\n├── ads.txt              # See https://iabtechlab.com/ads-txt/\n└── app-ads.txt          # See https://iabtechlab.com/ads-txt/\n```\n\n## Quick Setup\n\n1. Install dependencies:\n   ```bash\n   bun install\n   ```\n\n2. Setup environment variables:\n   ```bash\n   # Follow .env.example to create .env file with:\n   SITE_URL=your_site_url\n   SITE_NAME=your_site_name\n   POCKETBASE_HOST=your_pocketbase_host\n   POCKETBASE_USER=your_pocketbase_user\n   POCKETBASE_PASS=your_pocketbase_pass\n   UMAMI_WEBSITE_ID=your_umami_id\n   ```\n\n3. Start development server:\n   ```bash\n   bun dev\n   ```\n\n## Project Structure\n\n```\n├── src/\n│   ├── app/                    # Next.js application pages and routes\n│   │   └── (pages)/\n│   │       ├── (components)/   # UI components specific to route\n│   │       └── page.tsx/       # UI components for route\n│   ├── components/             # Reusable UI components\n│   │   ├── effects/            # Reusable effects\n│   │   ├── footer/             # Footer and its components\n│   │   ├── icons/              # Well, icons\n│   │   ├── navigation/         # Navigation drawer\n│   │   └── ...                 # Other reusable UI components\n│   ├── lib/                    # Utility functions and hooks\n│   │   ├── hooks/              # Custom React hooks\n│   │   ├── context/            # Custom React contexts\n│   │   ├── markdown/           # Markdown processing utilities\n│   │   ├── utils/              # General utilites\n│   │   └── trustedTypes.ts     # Enables trusted types\n│   ├── pocketbase/             # PocketBase configuration and client\n│   └── styles/                 # Global styles and theming\n├── public/                     # Static assets and PWA files\n└── scripts/                    # Scripts to generate some fun\n```\n\n## Core Technologies\n\n- **Framework \u0026 Runtime**\n  - [Next.js 15](https://nextjs.org) with App Router\n  - [React 19](https://react.dev)\n  - [Bun](https://bun.sh) as JavaScript runtime and package manager\n  - TypeScript with strict mode\n\n- **Styling \u0026 Design**\n  - [TailwindCSS v4](https://tailwindcss.com)\n  - [Geist \u0026 Geist Mono](https://vercel.com/font), [Pixelify Sans](https://fonts.google.com/specimen/Pixelify+Sans) fonts\n  - [next-themes](https://github.com/pacocoursey/next-themes) for theming\n\n- **Content \u0026 Data**\n  - [PocketBase](https://pocketbase.io) for backend\n  - [Unified](https://unifiedjs.com) for Markdown processing\n\n- **Animation \u0026 Interaction**\n  - [Lenis](https://github.com/darkroomengineering/lenis) for smooth scrolling\n\n- **Development Tools**\n  - [Biome](https://biomejs.dev) for linting \u0026 formatting\n  - [Lefthook](https://github.com/evilmartians/lefthook) for Git hooks\n  - Conventional commits\n\n- **Analytics**\n  - [Umami](https://github.com/umami-software/umami) for privacy-friendly anallytics. See [analytics.cod3d.dev](https://analytics.cod3d.dev) for stats.\n\n## Development Tools\n\n### Available Commands\n- `bun run dev` - Start development server\n- `bun run build` - Build production bundle (with telemetry disabled)\n- `bun run build:clean` - Clean build directory and rebuild\n- `bun run start` - Start production server\n- `bun run lint` - Run Biome linter\n- `bun run lint:fix` - Fix linting issues with Biome\n- `bun run analyze` - Analyze bundle size\n- `bun run generate:pokemons` - Generate Pokemon data\n- `bun run commit` - Interactive commit with conventional commit standards\n\n## Features\n\n- Markdown with frontmatter support, syntax highlighting, KaTeX and more.\n- Reading time estimation\n- Image theming\n- RSS feed, download articles in original format (markdown)\n- CSP, CORS, Trusted Types\n- Middleware with download token generation\n\n## Git Workflow\n\n### Automated Git Hooks (via Lefthook)\n- **Pre-commit**: Runs Biome to check and format staged files\n- **Commit-msg**: Validates commit messages using commitlint\n\n## Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes using conventional commits (`bun run commit`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## License\n\nThis projects strives to be REUSE compliant.\n\nGenerally:\n- Art, documentation and security-related .txt files are licensed under CC-BY-NC-SA-4.0\n- Code is licensed under Apache-2.0\n- Fonts are used under OFL-1.1\n- Config files are under CC0-1.0\n\nPokémon and Pokémon character names are trademarks of Nintendo.\n\n```\n   Copyright 2025 cod3ddot@proton.me\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcod3ddot%2Fcod3d.dev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcod3ddot%2Fcod3d.dev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcod3ddot%2Fcod3d.dev/lists"}