In progress

Projects I am building right now. The roadmap shows what is done and what comes next, and is updated as the work moves on.

Leverandørvakt

In development

An 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 done

From 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)
  • requireAuth middleware for protected endpoints
  • GET /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
Source code