## Context <img width="1349" alt="Screenshot 2025-01-13 at 17 18 24" src="https://github.com/user-attachments/assets/4f5da0e9-0245-41c6-bde2-4d52e0ba34ed" /> Feature flags are stored in DB and then cast as FeatureFlag gql type from its corresponding enum. This means if a value from the DB does not match that enum type, the gql server will reject the call when returning the object in the resolver. (see screenshot above) To solve that, we want to do 2 things: - The ORM should still return the feature flag even if it's not valid, this is actually in the DB so we don't want to "hide" that, however we now have a warning message. - The service is not changed for the same reason, the limitation comes from gql behaviour so this is not the goal of the service nor the ORM to act on it (except the warning message) - The resolver should be updated, here we want to filter-out non-valid feature flags so it does not break the API. Because featureFlags used to be auto-generated by nestjsquery and we want to change its behavior, I had to manually create a resolveField for featureFlags and remove the auto-generated one. That means we lose some features such as filter/sort coming from nestjs-query pagination (which is something we will want to implement once we will remove nestjs-query but that's a whole other subject)
The #1 Open-Source CRM
🌐 Website · 📚 Documentation · Discord ·
Figma
Demo
Go to demo.twenty.com and login with the following credentials:
email: tim@apple.dev
password: Applecar2025
See also:
🚀 Self-hosting
🖥️ Local Setup
Does the world need another CRM?
We built Twenty for three reasons:
CRMs are too expensive, and users are trapped. Companies use locked-in customer data to hike prices. It shouldn't be that way.
A fresh start is required to build a better experience. We can learn from past mistakes and craft a cohesive experience inspired by new UX patterns from tools like Notion, Airtable or Linear.
We believe in Open-source and community. Hundreds of developers are already building Twenty together. Once we have plugin capabilities, a whole ecosystem will grow around it.
What You Can Do With Twenty
We're currently developing Twenty's beta version.
Please feel free to flag any specific needs you have by creating an issue.
Below are a few features we have implemented to date:
- Add, filter, sort, edit, and track customers
- Create one or several opportunities for each company
- See rich notes tasks displayed in a timeline
- Create tasks on records
- Navigate quickly through the app using keyboard shortcuts and search
Add, filter, sort, edit, and track customers:
Create one or several opportunities for each company:
Track deals effortlessly with the email integration:
Tailor your data model to meet business needs:
See rich notes displayed in a timeline:
Create tasks on records
Navigate quickly through the app using keyboard shortcuts and search:
Connect your CRM to all your tools through our APIs and Webhooks.
Stack
- TypeScript
- Nx
- NestJS, with BullMQ, PostgreSQL, Redis
- React, with Recoil and Emotion
- Greptile for code reviews.
Join the Community
- Star the repo
- Subscribe to releases (watch -> custom -> releases)
- Follow us on Twitter or LinkedIn
- Join our Discord
- Contributions are, of course, most welcome!




