{"id":51192059,"url":"https://github.com/bittencourt/pipelite","last_synced_at":"2026-06-27T16:01:18.960Z","repository":{"id":340564998,"uuid":"1166615303","full_name":"Bittencourt/pipelite","owner":"Bittencourt","description":"Self-hostable CRM with kanban pipeline management, activity tracking, and custom fields","archived":false,"fork":false,"pushed_at":"2026-04-06T00:51:38.000Z","size":8522,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-06T02:32:14.351Z","etag":null,"topics":["crm","docker","drizzle-orm","kanban","nextjs","postgresql","self-hosted","typescript"],"latest_commit_sha":null,"homepage":null,"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/Bittencourt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-25T12:17:27.000Z","updated_at":"2026-03-28T02:44:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Bittencourt/pipelite","commit_stats":null,"previous_names":["bittencourt/pipelite"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/Bittencourt/pipelite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bittencourt%2Fpipelite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bittencourt%2Fpipelite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bittencourt%2Fpipelite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bittencourt%2Fpipelite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bittencourt","download_url":"https://codeload.github.com/Bittencourt/pipelite/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bittencourt%2Fpipelite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34859073,"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-27T02:00:06.362Z","response_time":126,"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":["crm","docker","drizzle-orm","kanban","nextjs","postgresql","self-hosted","typescript"],"created_at":"2026-06-27T16:01:18.010Z","updated_at":"2026-06-27T16:01:18.953Z","avatar_url":"https://github.com/Bittencourt.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pipelite\n\nA lightweight, self-hostable CRM with kanban-style pipeline management.\n\n## Features\n\n- **Authentication** - Email/password signup with admin approval workflow\n- **Organizations** - Company management for B2B sales tracking\n- **People** - Contact management linked to organizations\n- **Pipelines \u0026 Stages** - Configurable sales pipelines with drag-and-drop stages\n- **Deals \u0026 Kanban** - Visual deal management with drag-and-drop board\n- **Activities** - Follow-up tracking with calendar view (week/month)\n- **Custom Fields** - Extensible entities with calculated fields\n- **Search \u0026 Filtering** - Global search across organizations, people, and deals\n- **Import/Export** - Bulk data management via CSV\n- **REST API** - Full CRUD API with webhook support\n\n## Tech Stack\n\n- **Framework**: Next.js 16 (App Router)\n- **Database**: PostgreSQL with Drizzle ORM\n- **Auth**: Auth.js (NextAuth.js v5) with JWT strategy\n- **UI**: shadcn/ui + Tailwind CSS\n- **Deployment**: Docker Compose\n\n## Quick Start\n\n### Using Docker (Recommended)\n\n```bash\n# Clone the repository\ngit clone https://github.com/Bittencourt/pipelite.git\ncd pipelite\n\n# Start all services\ndocker compose up -d\n\n# Seed activity types (first time only)\ndocker exec pipelite-postgres-1 psql -U pipelite -d pipelite -c \"\nINSERT INTO activity_types (id, name, icon, color, is_default, created_at) VALUES\n('call', 'Call', 'Phone', '#3B82F6', true, NOW()),\n('meeting', 'Meeting', 'Users', '#10B981', true, NOW()),\n('task', 'Task', 'CheckSquare', '#F59E0B', true, NOW()),\n('email', 'Email', 'Mail', '#8B5CF6', true, NOW())\nON CONFLICT (id) DO NOTHING;\"\n\n# Access the app\nopen http://localhost:3001\n```\n\nServices:\n- **App**: http://localhost:3001\n- **Mailhog** (email testing): http://localhost:8025\n- **PostgreSQL**: localhost:5433\n\n### Manual Setup\n\n```bash\n# Install dependencies\nnpm install\n\n# Set up environment\ncp .env.example .env.local\n# Edit .env.local with your database URL and auth secret\n\n# Run migrations\nnpm run db:migrate\n\n# Seed activity types\nnpm run db:seed-activities\n\n# Start dev server\nnpm run dev\n```\n\n## Environment Variables\n\n```env\nDATABASE_URL=\"postgresql://user:password@localhost:5432/pipelite\"\nAUTH_SECRET=\"generate-with-openssl-rand-base64-32\"\nNEXTAUTH_URL=\"http://localhost:3001\"\n\n# Email (optional for dev - use Mailhog)\nSMTP_HOST=\"localhost\"\nSMTP_PORT=\"1025\"\nSMTP_SECURE=\"false\"\nSMTP_USER=\"\"\nSMTP_PASSWORD=\"\"\nEMAIL_FROM=\"noreply@example.com\"\n```\n\n## Project Structure\n\n```\nsrc/\n├── app/                    # Next.js App Router pages\n│   ├── activities/         # Activity management\n│   ├── admin/              # Admin panel\n│   ├── deals/              # Deals \u0026 kanban board\n│   ├── organizations/      # Company management\n│   └── people/             # Contact management\n├── components/             # Reusable UI components\n│   └── ui/                 # shadcn/ui components\n├── db/                     # Database layer\n│   └── schema/             # Drizzle schema definitions\n└── lib/                    # Utilities\n```\n\n## Documentation\n\nFull documentation is available in the [`docs/`](./docs/index.md) directory:\n\n- **[Getting Started](./docs/user/getting-started.md)** - Learn the basics in 10 minutes\n- **[User Guide](./docs/user/)** - Tutorials and reference for end users\n- **[REST API](./docs/api/index.md)** - API reference, authentication, webhooks, and examples\n- **[Admin Guide](./docs/admin/index.md)** - Deployment, configuration, and operations\n- **[Developer Guide](./docs/development/index.md)** - Architecture, contributing, and coding standards\n\n## Roadmap\n\n- [x] Foundation \u0026 Authentication\n- [x] Organizations\n- [x] People\n- [x] Pipelines \u0026 Stages\n- [x] Deals \u0026 Kanban\n- [x] Activities\n- [x] Custom Fields \u0026 Formulas\n- [x] Search \u0026 Filtering\n- [x] Import/Export\n- [x] REST API\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbittencourt%2Fpipelite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbittencourt%2Fpipelite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbittencourt%2Fpipelite/lists"}