{"id":17649318,"url":"https://github.com/shawntoubeau/mapit","last_synced_at":"2026-04-08T21:31:31.543Z","repository":{"id":119410967,"uuid":"587390180","full_name":"ShawnToubeau/mapit","owner":"ShawnToubeau","description":"Multi-location, event mapping tool that empowers users and organizers.","archived":false,"fork":false,"pushed_at":"2023-05-29T23:30:51.000Z","size":866,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-30T08:15:53.200Z","etag":null,"topics":["golang","grpc","nextjs","postgresql","protocol-buffers","react","typescript"],"latest_commit_sha":null,"homepage":"https://mapit.city","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ShawnToubeau.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-01-10T16:33:30.000Z","updated_at":"2023-02-15T21:34:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"e97e46ab-a68e-4d96-921b-771f985c39a8","html_url":"https://github.com/ShawnToubeau/mapit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ShawnToubeau/mapit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShawnToubeau%2Fmapit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShawnToubeau%2Fmapit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShawnToubeau%2Fmapit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShawnToubeau%2Fmapit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ShawnToubeau","download_url":"https://codeload.github.com/ShawnToubeau/mapit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShawnToubeau%2Fmapit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31575423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"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":["golang","grpc","nextjs","postgresql","protocol-buffers","react","typescript"],"created_at":"2024-10-23T11:25:38.060Z","updated_at":"2026-04-08T21:31:31.528Z","avatar_url":"https://github.com/ShawnToubeau.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mapit\n\nMapit is an open-source mapping tool that makes it easy for organizers to manage and share points-of-interest for their events.\n\nMapit is built with Go 1.19, Next.js 12, and Protocol Buffers v3. The client offers a highly interactive map using [Leaflet](https://leafletjs.com/) and map tiles from [OpenStreetMap](https://www.openstreetmap.org). Client-server communication is handled by [Connect](https://connect.build/) to generate gRPC APIs. The server talks to a [Supabase](https://supabase.com/) instance running PostgreSQL. It uses [Ent](https://entgo.io/) to manage migrations and perform simple CRUD operations. Authentication is managed by Supabase as well, providing easy integration within both the client and server. Mapit employs the [Nominatim](https://nominatim.org/) geocoding service for address lookup and caches results in Redis.\n\n## Developer Setup\n\n### Environment Variables\n\nThe `./server` directory contains a `.env` file which holds PostgreSQL and Redis connection info. You can get the PostgreSQL info from Supabase. It's important that Supabase **must** be used because Mapit depends on it for authentication.\n\nMapit can use any Redis instance. We currently use an [Upstash](https://upstash.com/) free tier.\n\nThe `./client` directory contains a `.env.local` file which holds Supabase connection info for authentication.\n\n### Root\n\n| Command          | Description                                                 |\n|------------------|-------------------------------------------------------------|\n| `buf lint`       | Lint all protocol buffer files                              |\n| `yarn gen-proto` | Generate the latest client code based on the protobuf files |\n\n### Server\n\n| Command                                                            | Description                                |\n|--------------------------------------------------------------------|--------------------------------------------|\n| `migrate create -ext sql -dir db/migrations -seq \u003cMIGRATION_NAME\u003e` | Creates empty up and down migration files  |\n| `go generate ./ent`                                                | Generates DB client and applies migrations |\n| `go run main.go`                                                   | Starts the server on port 8080             |\n| `flyctl deploy`                                                    | Deploy the latest code to fly.io           |\n\n### Client\n\n| Command                   | Description                         |\n|---------------------------|-------------------------------------|\n| `yarn dev`                | Starts the client on port 3000      |\n| `ANALYZE=true yarn build` | Build and analyze the client bundle |\n\n### Embed\n\n| Command        | Description                     |\n|----------------|---------------------------------|\n| `yarn build`   | Build the mapit-embed package   |\n| `yarn publish` | Publish the latest build to NPM |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshawntoubeau%2Fmapit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshawntoubeau%2Fmapit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshawntoubeau%2Fmapit/lists"}