Skip to content

Latest commit

 

History

90 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chile Devs Map

License: MIT

An interactive map of Chilean developers on GitHub. Browse developers by city and region, explore public contribution stats, and search by language or location.

Installation

Prerequisites

1. Start the database

docker compose up -d

2. Backend

cd backend
cp .env.example .env
pnpm install
pnpm db:push
pnpm db:seed
pnpm start:dev

Database schema

The canonical schema lives in backend/src/db/schema.ts. Sync it to PostgreSQL with:

pnpm db:push

Do not use pnpm db:migrate. The SQL files under backend/drizzle/ are historical artifacts and the Drizzle migration journal is not a reliable chain for a clean database (for example, some columns exist only in orphaned migration files). db:push applies the current TypeScript schema directly and is the supported workflow for local setup and new environments.

After changing schema.ts, run pnpm db:push again. You can run pnpm db:generate to refresh SQL snapshots under backend/drizzle/ for reference, but those files are not applied in normal development.

Edit backend/.env and set at least:

Variable Description
DATABASE_URL PostgreSQL connection string (defaults in .env.example match Docker Compose)
REDIS_URL Redis connection string for enrichment cache (defaults in .env.example match Docker Compose)
GITHUB_TOKEN GitHub personal access token — required to sync developer data
GITHUB_OAUTH_CLIENT_ID GitHub OAuth App client ID — required for profile claiming
GITHUB_OAUTH_CLIENT_SECRET GitHub OAuth App client secret — required for profile claiming
GITHUB_OAUTH_CALLBACK_URL OAuth callback URL (default: http://localhost:3000/api/auth/github/callback)
SESSION_SECRET Secret used to sign login session cookies
FRONTEND_URL Frontend origin for OAuth redirects (default: http://localhost:5173)
GOOGLE_GENERATIVE_AI_API_KEY Google AI Studio key — currently unused, but it could be used later to add AI features. It was used before for NL search.
SYNC_TOKEN Secret for the manual sync endpoint — send as Authorization: Bearer <token> on POST /api/sync and POST /api/sync/user. For POST /api/sync/user, also include ?user=<login>; omitting it returns HTTP 400.

GitHub OAuth setup (profile claiming)

Developers can sign in with GitHub to claim their profile and add a portfolio URL, role, and description.

  1. Create a GitHub OAuth App.
  2. Set Authorization callback URL to http://localhost:3000/api/auth/github/callback.
  3. Copy the client ID and client secret into backend/.env.
  4. Set a random SESSION_SECRET (any long random string).

In production, set GITHUB_OAUTH_CALLBACK_URL and FRONTEND_URL to your deployed API and frontend URLs. If the frontend and API are on different origins, run the API with NODE_ENV=production so session cookies use SameSite=None; Secure.

The API runs at http://localhost:3000. On first start with a valid GITHUB_TOKEN and an empty database, a sync runs automatically. Syncs also run every 3 hours.

3. Frontend

cd frontend
cp .env.example .env   # optional — defaults work with the Vite dev proxy
pnpm install
pnpm dev

Open http://localhost:5173. API requests are proxied to the backend via /api.

Contributing

Contributions are welcome. To get started:

  1. Fork the repository and create a branch from main.
  2. Make your changes and run linting in the affected package (pnpm lint in backend/ or frontend/).
  3. Open a pull request with a clear description of what changed and why.

For larger changes, open an issue first to discuss the approach. Bug reports and suggestions are appreciated too.

Limitations

This project is a snapshot of publicly available GitHub data, not a complete directory of every Chilean developer.

  • Incomplete coverage — Discovery relies on the free-form location field on GitHub profiles. Not all developers set a location, and spelling varies, so the list is not exhaustive.
  • Public data only — Stats and languages are derived from public repositories only. Private repos are not included.
  • Top-language sampling — Language breakdowns are computed from each developer's top 30 repositories (by stars) to stay within GitHub API rate limits and avoid 429 errors.
  • Limited locations — The map does not include every Chilean city and region, only the main ones included in the seed data. If yours is missing, open an issue and ask to have it added.
  • "Programming" languages — GitHub counts HTML and CSS as languages, so yes, someone might show up as a top HTML developer. We don't make the rules; we just report them.

License

This project is licensed under the MIT License.

About

An interactive map of Chilean developers on GitHub. Browse developers by city and region, explore public contribution stats, and search by language or location.

Topics

Resources

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages