{"id":25228835,"url":"https://github.com/threadseeker/backend","last_synced_at":"2026-04-13T16:32:19.965Z","repository":{"id":276932754,"uuid":"930774824","full_name":"Threadseeker/backend","owner":"Threadseeker","description":"Backend service of threadseeker","archived":false,"fork":false,"pushed_at":"2025-02-12T05:02:01.000Z","size":103,"stargazers_count":30,"open_issues_count":0,"forks_count":5,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-05T14:12:04.040Z","etag":null,"topics":["backend","nitro","nodejs","redis","supabase"],"latest_commit_sha":null,"homepage":"https://threadseeker.app","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/Threadseeker.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}},"created_at":"2025-02-11T07:31:15.000Z","updated_at":"2025-03-26T08:36:07.000Z","dependencies_parsed_at":"2025-02-11T08:50:20.188Z","dependency_job_id":null,"html_url":"https://github.com/Threadseeker/backend","commit_stats":null,"previous_names":["threadseeker/backend"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Threadseeker%2Fbackend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Threadseeker%2Fbackend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Threadseeker%2Fbackend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Threadseeker%2Fbackend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Threadseeker","download_url":"https://codeload.github.com/Threadseeker/backend/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247345851,"owners_count":20924102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["backend","nitro","nodejs","redis","supabase"],"created_at":"2025-02-11T10:45:59.446Z","updated_at":"2026-04-13T16:32:19.898Z","avatar_url":"https://github.com/Threadseeker.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Threadseeker Backend\n\nThis is the open-sourced backend repository for Threadseeker. It's built with [Nitro](https://nitro.unjs.io/) and [Supabase](https://supabase.com/) as the database. We also use [Redis](https://redis.io/) as the cache.\n\n## Build Setup\n\n```bash\n# install dependencies\n$ pnpm install\n\n# serve with hot reload at localhost:3000\n$ pnpm dev\n\n# build for production and launch server\n$ pnpm build\n$ pnpm start\n\n# preview production build\n$ pnpm preview\n```\n\nYou could write your own `Dockerfile` to build a container for the app. The team recommends using [Zeabur](https://zeabur.com) for the fast and easy deployment.\n\n## Environment Variables\n\nBefore running the app, you need to set certain environment variables in the `.env` file. The required variables are listed in the `.env.example` file.\n\n## Database\n\nThreadseeker uses [Supabase](https://supabase.com/) as its database. Create the tables described in the [database/readme.md](database/readme.md) file in your Supabase or PostgreSQL database for the app to work.\n\n## Redis\n\nFor the data fetching task management and report `GET` endpoint, we use [Redis](https://redis.io/) as the cache. You may need to set up your own Redis instance or use [Upstash](https://upstash.com/).\n\nIf using Upstash, please update `utils/use-redis.ts` with this guide: [Store data in an Upstash Redis database.](https://unstorage.unjs.io/drivers/upstash#usage).\n\n## Special Directories\n\n### `routes/`\n\nThe `routes/` directory contains your application handlers. You can create subdirectories inside `routes/` dir to create nested handlers. The file name is the route path.\n\nFor more information, please refer to the [Nitro documentation](https://nitro.build/guide/routings).\n\n### `api/`\n\nThe api/ directory is similar to routes/ with the only difference that routes inside it will be prefixed with /api/ for convenience.\n\nFor more information, please refer to the [Nitro documentation](https://nitro.build/guide/routings).\n\n### `utils/`\n\nThis directory contains your application utils with auto import support. \n\nThis app has several composable util for Redis connection, task management and Threads users and reports management.\n\nFor more information, please refer to the [Nitro documentation](https://nitro.build/guide/utils).\n\n### `types/`\n\nThis directory contains your application types. `types/database.types.ts` is generated by Supabase ([guide here](https://supabase.com/docs/guides/api/rest/generating-types)).\n\n### `middleware/`\n\nNitro Middleware are auto-registered within the `middleware/` directory. A middleware can modify the request before it is processed, not after.\n\nFor more information, please refer to the [Nitro documentation](https://nitro.build/guide/routing#middleware).\n\n### `nitro.config.ts`\n\nThe nitro.config.ts file contains the configuration for Nitro.\n\nFor more information, please refer to the [Nitro documentation](https://nitro.build/guide/configuration).\n\n### `openapi/`\n\nThis is a custom directory for the OpenAPI schema. You can add or modify the OpenAPI schema files in this directory, and import them in the the [route meta](https://nitro.build/guide/routing#route-meta).\n\n\u003e This directory is not a default directory of Nitro. To avoid messing the api controller files, we separate the OpenAPI schema files to this directory.\n\n## API Documentation\n\nIn default, this app will generate the API documentation automatically. \n\nYou can access the API documentation at `http://localhost:3000/_docs/_swagger`. The project enables the [experimental doc generation](https://nitro.build/config#openapi) and prerender the docs in production.\n\nYou could disable the doc generation in production by removing `production` config in `openAPI` section of `nitro.config.ts`. **If enabled, remember to protect your API docs endpoints.**\n\nThe real-world API documentation of Threadseeker is available at [here](https://doc.threadseeker.app). We use Cloudflare Worker as a reverse proxy to protect the API docs without exposing the API host, and we also have the worker script open-sourced [here](https://github.com/Threadseeker/docs-proxy-worker).\n\n## License\n\nWe use [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) for this project. See the [LICENSE](LICENSE) file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthreadseeker%2Fbackend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthreadseeker%2Fbackend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthreadseeker%2Fbackend/lists"}