{"id":50822540,"url":"https://github.com/lxssl/peopletag-api","last_synced_at":"2026-06-13T15:34:35.372Z","repository":{"id":325494453,"uuid":"1101387227","full_name":"lxssl/peopletag-api","owner":"lxssl","description":"RESTful API server for the PeopleTag protocol - enabling dApps to interact with encrypted interest graphs","archived":false,"fork":false,"pushed_at":"2025-11-21T16:32:48.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-21T18:15:55.259Z","etag":null,"topics":["api","ethereum","express","firebase-functions","ipfs","nodejs","peopletag","rest-api","web3"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/lxssl.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":"2025-11-21T15:48:26.000Z","updated_at":"2025-11-21T16:32:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lxssl/peopletag-api","commit_stats":null,"previous_names":["lxssl/peopletag-api"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/lxssl/peopletag-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxssl%2Fpeopletag-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxssl%2Fpeopletag-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxssl%2Fpeopletag-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxssl%2Fpeopletag-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lxssl","download_url":"https://codeload.github.com/lxssl/peopletag-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxssl%2Fpeopletag-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34290346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["api","ethereum","express","firebase-functions","ipfs","nodejs","peopletag","rest-api","web3"],"created_at":"2026-06-13T15:34:34.741Z","updated_at":"2026-06-13T15:34:35.367Z","avatar_url":"https://github.com/lxssl.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PeopleTag API\n\nRESTful API server for the PeopleTag protocol, enabling dApps to interact with the encrypted interest graph.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n\n- 🔍 **Profile Search**: Search for users by public tags and location\n- 👤 **Profile Retrieval**: Get profile data by wallet address\n- 🔐 **Wallet Authentication**: Verify wallet signatures for private data access\n- ⚡ **Rate Limiting**: Prevents abuse with configurable rate limits\n- 🌐 **CORS Support**: Configurable cross-origin requests\n- 🚀 **Multiple Deployment Options**: Standalone Express server or Firebase Cloud Functions\n\n## Quick Start\n\n### Installation\n\n```bash\nnpm install\n```\n\n### Configuration\n\nCreate a `.env` file:\n\n```env\nPORT=3001\nNODE_ENV=development\nALLOWED_ORIGINS=http://localhost:3000\nFIREBASE_PROJECT_ID=your-project-id\n```\n\n### Running Locally\n\n**Standalone Server:**\n```bash\nnpm run server\n```\n\n**Firebase Functions (local emulator):**\n```bash\ncd functions \u0026\u0026 npm install \u0026\u0026 cd ..\nfirebase emulators:start --only functions\n```\n\n## API Endpoints\n\n### Search Profiles\n\n```http\nGET /api/v1/profiles/search?tags=DeFi,Berlin\u0026limit=10\n```\n\n**Response:**\n```json\n{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"userAddress\": \"0x742d35Cc6634C0532925a3b844Bc454e4438f44e\",\n      \"publicTags\": [\"DeFi\", \"Berlin\", \"Yield Farming\"],\n      \"displayName\": \"BerlinDeFiUser\",\n      \"location\": \"Berlin\",\n      \"lastUpdated\": \"2025-11-20T10:00:00Z\"\n    }\n  ],\n  \"totalResults\": 1,\n  \"limit\": 10\n}\n```\n\n### Get Profile\n\n```http\nGET /api/v1/profiles/:userAddress\n```\n\n**Response:**\n```json\n{\n  \"status\": \"success\",\n  \"data\": {\n    \"userAddress\": \"0x742d35Cc6634C0532925a3b844Bc454e4438f44e\",\n    \"publicProfile\": {\n      \"displayName\": \"BerlinDeFiUser\",\n      \"publicTags\": [\"DeFi\", \"Berlin\"],\n      \"location\": \"Berlin\",\n      \"lastUpdated\": \"2025-11-20T10:00:00Z\"\n    },\n    \"profileCID\": \"QmXo...\"\n  }\n}\n```\n\n## Deployment\n\n### Firebase Cloud Functions\n\n```bash\n# Install Firebase CLI if needed\nnpm install -g firebase-tools\n\n# Login to Firebase\nfirebase login\n\n# Deploy functions\nfirebase deploy --only functions\n```\n\nThe API will be available at `https://your-project-id.cloudfunctions.net/api/api/v1/profiles/...`\n\n### Other Platforms\n\nThe standalone Express server (`server/` directory) can be deployed to:\n- Railway\n- Heroku\n- AWS Lambda\n- Google Cloud Run\n- Any Node.js hosting platform\n\n## Documentation\n\n- [API Documentation](server/README.md) - Complete API reference\n- [Quick Start Guide](server/QUICKSTART.md) - Setup instructions\n- [SDK Example](server/examples/sdk-example.js) - Client library example\n\n## Architecture\n\n```\npeopletag-api/\n├── server/              # Standalone Express server\n│   ├── routes/         # API routes\n│   ├── controllers/    # Request handlers\n│   ├── services/       # Business logic\n│   ├── middleware/     # Auth, error handling\n│   └── utils/          # Utilities\n├── functions/          # Firebase Cloud Functions version\n└── package.json\n```\n\n## Dependencies\n\n- **Express**: Web framework\n- **Firebase Admin**: Firestore access\n- **@peopletag/protocol**: IPFS and blockchain operations\n- **ethers**: Wallet signature verification\n- **@noble/ciphers**: Encryption/decryption\n\n## Security\n\n- ✅ Rate limiting (100 requests/15min per IP)\n- ✅ Input validation\n- ✅ Wallet signature verification\n- ✅ Private data encryption\n- ✅ CORS configuration\n\n## Contributing\n\nContributions are welcome! Please read our contributing guidelines before submitting PRs.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Related Projects\n\n- [@peopletag/protocol](https://github.com/lxssl/peopletag-protocol) - Core protocol library\n\n## Support\n\nFor issues and questions, please open an issue on GitHub.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flxssl%2Fpeopletag-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flxssl%2Fpeopletag-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flxssl%2Fpeopletag-api/lists"}