{"id":49550365,"url":"https://github.com/magnovaai/codecity","last_synced_at":"2026-05-02T22:05:36.944Z","repository":{"id":342244521,"uuid":"1173351056","full_name":"MagnovaAI/codecity","owner":"MagnovaAI","description":"Your codebase, reimagined as a 3D city. Paste a GitHub URL, get an interactive WebGL cityscape — files as buildings, imports as glowing pipes, complexity as height.","archived":false,"fork":false,"pushed_at":"2026-04-30T07:47:24.000Z","size":12904,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-30T09:21:34.734Z","etag":null,"topics":["3d","ast","code-visualization","developer-tools","firebase","inngest","monorepo","neon","nextjs","open-source","react-three-fiber","redis","three-js","ts-morph","turbo","turborepo","typescript","upstash","vercel","webgl"],"latest_commit_sha":null,"homepage":"https://codecity.magnova.ai","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/MagnovaAI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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-03-05T09:16:37.000Z","updated_at":"2026-04-30T07:47:19.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/MagnovaAI/codecity","commit_stats":null,"previous_names":["omkarbhad/codecity","magnovaai/codecity"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/MagnovaAI/codecity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MagnovaAI%2Fcodecity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MagnovaAI%2Fcodecity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MagnovaAI%2Fcodecity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MagnovaAI%2Fcodecity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MagnovaAI","download_url":"https://codeload.github.com/MagnovaAI/codecity/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MagnovaAI%2Fcodecity/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32550931,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T21:31:48.061Z","status":"ssl_error","status_checked_at":"2026-05-02T21:31:46.574Z","response_time":132,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["3d","ast","code-visualization","developer-tools","firebase","inngest","monorepo","neon","nextjs","open-source","react-three-fiber","redis","three-js","ts-morph","turbo","turborepo","typescript","upstash","vercel","webgl"],"created_at":"2026-05-02T22:05:21.907Z","updated_at":"2026-05-02T22:05:36.939Z","avatar_url":"https://github.com/MagnovaAI.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CodeCity\n\nCodeCity is a local-first Tauri desktop app that turns a local folder or GitHub repository into a 3D city. Files become buildings, directories become districts, and imports become connection paths that make architecture visible at a glance.\n\nThe app is intentionally a single project. The UI stays in TypeScript/React because it drives the 3D experience, while repository analysis, parsing, storage, GitHub imports, and offline folder support live in Rust under `src-tauri`.\n\n## Features\n\n- Analyze GitHub repositories or local folders.\n- Queue analyses and refresh completed cities.\n- Store parsed city data locally in SQLite.\n- Browse GitHub repositories, trending repositories, and recent cities.\n- View code structure as a 3D city with file details, filters, commits, and dependency paths.\n- Package native desktop builds for Windows, macOS, and Linux.\n- Supports Tauri updater artifacts through GitHub Releases.\n\n## Downloads\n\nStable builds are published on the GitHub Releases page.\n\n| Platform | Release asset |\n|---|---|\n| Windows | NSIS setup `.exe` and WiX `.msi` installers |\n| macOS Apple Silicon | `.dmg` and `.app.tar.gz` for `aarch64` |\n| macOS Intel | `.dmg` and `.app.tar.gz` for `x86_64` |\n| Linux | `.AppImage`, `.deb`, and `.rpm` packages |\n\nThe app updater reads `latest.json` from:\n\n```text\nhttps://github.com/MagnovaAI/codecity/releases/latest/download/latest.json\n```\n\n## Stack\n\n| Layer | Technology |\n|---|---|\n| Desktop shell | Tauri 2 |\n| Backend | Rust, tree-sitter, SQLite |\n| Frontend | Next.js 16, React 19, TypeScript |\n| 3D scene | Three.js, React Three Fiber |\n| Styling | Tailwind CSS v4 |\n| Package manager | pnpm 9 |\n\n## Project Structure\n\n```text\ncodecity/\n├── src/                    # Next.js app, UI, city scene, client helpers\n│   ├── app/                # App Router pages\n│   ├── components/         # Product and city components\n│   ├── lib/                # Frontend helpers and Tauri bridge\n│   └── ui/                 # Local shadcn-style UI primitives\n├── src-tauri/              # Rust backend and Tauri desktop package\n│   └── src/analysis/       # Parser, layout, database, GitHub analysis\n├── public/                 # Static assets\n├── scripts/                # Desktop/server helper scripts\n└── package.json\n```\n\n## Development\n\nInstall dependencies:\n\n```bash\npnpm install\n```\n\nRun the web UI:\n\n```bash\npnpm dev\n```\n\nRun the desktop app:\n\n```bash\npnpm desktop\n```\n\nCheck the project:\n\n```bash\npnpm type-check\ncd src-tauri \u0026\u0026 cargo check\n```\n\nBuild locally:\n\n```bash\npnpm build\npnpm bundle:desktop\n```\n\n## Release\n\nReleases are built by `.github/workflows/release.yml` with `tauri-apps/tauri-action`. The workflow builds:\n\n- macOS Apple Silicon: `aarch64-apple-darwin`\n- macOS Intel: `x86_64-apple-darwin`\n- Windows: `windows-latest`, producing NSIS `.exe` and WiX `.msi` installers.\n- Linux: `ubuntu-22.04`, producing `.AppImage`, `.deb`, and `.rpm` packages.\n\nBefore the first release, configure these repository secrets:\n\n| Secret | Required | Purpose |\n|---|---:|---|\n| `TAURI_SIGNING_PRIVATE_KEY` | Yes | Full updater private key content generated by `pnpm tauri signer generate -w ~/.tauri/codecity.key`. Include the comment lines. |\n| `TAURI_SIGNING_PRIVATE_KEY_PASSWORD` | If your key has one | Exact password for the updater signing key, or an empty value for an unencrypted key. |\n\nThe public key from the signer command must match `plugins.updater.pubkey` in `src-tauri/tauri.conf.json`.\n\nCreate a release by bumping versions in:\n\n- `package.json`\n- `src-tauri/Cargo.toml`\n- `src-tauri/tauri.conf.json`\n\nThen tag and push:\n\n```bash\ngit tag v0.1.0\ngit push origin main --tags\n```\n\nYou can also run the workflow manually from GitHub Actions. The workflow creates a GitHub Release named `CodeCity v__VERSION__`, uploads platform installers, and publishes updater metadata.\n\n## Notes\n\n- GitHub archive download is the fastest import path. Git clone is used as a fallback.\n- Clone fallback uses shallow, single-branch, no-tag clones to reduce transfer size.\n- Local folder analysis works offline after the app is installed.\n- If a local folder was moved or deleted, refresh/reanalysis will report that directly.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagnovaai%2Fcodecity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmagnovaai%2Fcodecity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagnovaai%2Fcodecity/lists"}