Leverandørvakt
Under utviklingEn varslingstjeneste for norske virksomheter, bygget på åpne data fra Brønnøysundregistrene. Brukerne følger selskapene de jobber med og får beskjed når noe viktig endrer seg.
Startet: 8. november 2026
- Node.js
- TypeScript
- Express 5
- PostgreSQL
- Sequelize
- Umzug
- JWT
- Swagger
Hvorfor jeg bygger det
Små bedrifter merker sjelden at en leverandør eller kunde er i trøbbel før en faktura ikke blir betalt. Det offentlige registeret viser allerede varselsignalene: ny daglig leder, endringer i styret, forsinket årsregnskap eller åpning av konkurs. Leverandørvakt følger med på disse signalene, så brukeren slipper.
Veikart
28 / 32 milepæler ferdigFra prosjektets README · på engelsk
Foundation
- Express 5 + TypeScript project setup
- Brønnøysund API integration: lookup by organization number and search by name
- Layered architecture: routes, controllers, services, mappers
- Swagger / OpenAPI documentation
- PostgreSQL connection with Sequelize
- Versioned migrations with Umzug, applied on startup
Authentication and users
- User registration and login (bcrypt + JWT)
- Internal ID + public UUID, roles (
user/admin) requireAuthmiddleware for protected endpointsGET /api/auth/me— current user's profile- Admin account created once on startup from environment variables
Watchlist and change detection
- Data model design:
companies,watchlist_entries,company_changes - Add and remove companies from a user's watchlist
- Scheduled change detection using the Brønnøysund update feeds (companies and roles)
- Change history per company
- Notifications for followed companies
Testing and CI
- Test setup: Vitest + Supertest with a separate test database
- Fake Brønnøysund API for tests, so the suite never depends on the network
- Tests for auth, companies, watchlist, change detection, role changes, annual accounts, risk signals, notifications, the AI assistant and admin
- GitHub Actions CI: type check and tests on every push
Company data
- Roles: CEO and board changes from the Brønnøysund roles API
- Annual accounts: key figures from the Register of Company Accounts
- Annual accounts: storing every filing, detecting new filings and warning signs
- Ownership service: separate Python ETL for Skatteetaten shareholder data
Insights
- Role network: shared people and audit firms across your companies, matched on name and birth date without storing them
- Risk signals: explainable assessment, stored levels and early warning
- Regional trends: new registrations by month, municipality, industry and form, with industry breakdowns
AI
- AI assistant with tool calling, using the existing service functions
Delivery
- Docker Compose for local development
- Deployment (Render + Aiven PostgreSQL)
- Frontend
- Usage guide with scenarios