Leverandørvakt
In developmentAn early-warning service for Norwegian businesses, built on open data from the Brønnøysund Register Centre. Users follow the companies they work with and are notified when something important changes.
Started: 8 November 2026
- Node.js
- TypeScript
- Express 5
- PostgreSQL
- Sequelize
- Umzug
- JWT
- Swagger
Why I'm building it
Small businesses rarely notice that a supplier or customer is in trouble until an invoice goes unpaid. The public registry already shows the warning signs: a new CEO, changes in the board, late annual accounts or the start of bankruptcy proceedings. Leverandørvakt watches those signals so the user does not have to.
Roadmap
28 / 32 milestones doneFrom the project's README
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