---
title: "A paid-leave request application for CICP2R"
description: "For CICP2R, a paid-leave fund, a web application where paid-leave requests and days to pay are entered on the employer side, then validated and passed on."
url: "https://mc-stud.io/en/work/cicp-leave-requests"
author: "Matisse Chenavas"
date: "2025-11-19"
lang: "en"
---

# A paid-leave request application for CICP2R

> On the employer side, paid-leave requests and days to pay are entered in a dedicated application, then go through an explicit validation.

- **Client**: CICP2R
- **Sector**: Social protection, paid-leave fund
- **Period**: 2024-2025
- **My role**: Full-stack developer, contributor
- **Setting**: Through a partner
- **Team**: Embedded in an existing team · 5 people (Within a team of at least five developers.)
- **Technologies**: NestJS, Vue.js, Pinia, TypeScript
- **Reading time**: 2 min

## At a glance

- **Stake**: A paid-leave fund pays employees' leave indemnities: every request must reach it complete, quantified and validated, without re-keying.
- **Mechanism**: A NestJS API structures leave periods and exchanges files with the existing system over SMB; a Vue 3 interface guides data entry.
- **Proof**: A year of contributions to the API and the interface, from November 2024 to November 2025, and an audit of the application in October 2025.
- **Impact**: Every request has an identifiable status and path, and the application fits into the existing file exchanges instead of duplicating them.
- **Limits**: I contributed within a team of at least five developers; I claim neither the lead nor the overall design.

## The starting point

CICP2R is a paid-leave fund (caisse de congés payés): a non-profit association founded by employers in 1937, supervised by the French Ministry of Labour, which pays employees their paid-leave indemnities. To pay correctly, it needs every request with its periods, its days to pay and, where relevant, the employee's departure.

Leave management gathers many small frictions: a request sent through one channel, validated through another, then copied by hand. Each step is simple; chaining them is much less so.

## What I built

I worked on the API as well as the interface, within the project team. The application collects requests, structures leave periods and stores them with each request, then puts them through a validation before export.

On the server side, the NestJS API exchanges files with the existing system over SMB: the application fits into the circuit already in place instead of creating a second one. On the interface side, Vue 3 and Pinia carry data entry, the request grid and the leave state.

## What the evidence shows

My work shows in the history of both repositories, the API and the interface, over a year[^git]. In October 2025, an audit of the application documented how it actually works[^audit]: storage of leave periods, validation circuit, state management in the interface.

The screenshots below come from a local instance of the application, fed with fictional data.


## What it changes

Every request has an identifiable status and path, from entry to export. The file exchange with the existing system avoids double entry between the application and the fund.

My takeaway: an HR tool is only useful if it matches the organisation's real circuit. The technology matters less than getting that circuit right and the quality of the exchanges with the system that pays.

## Limits

- My part is that of a contributor: other developers wrote a large share of the interface.
- No usage indicator is available: request volume, number of employers, lead times.
- The exact target of the SMB exchange and the go-live date remain to be confirmed.
- The project documents contain personal data: nothing from them is reused here, and the screenshots use fictional data.

[^git]: Git history: 33 commits on the API and 60 on the interface, from November 2024 to November 2025. A commit count measures neither effort nor quality.

[^audit]: Audit notes from October 2025: leave periods stored as JSON, validation circuit, a Pinia store dedicated to leave. They are not published because they quote personal data.

## Links

- [CICP2R](https://www.cicp2r.org/)

---

Matisse Chenavas, Founder of MC Studio. https://mc-stud.io/en/work/cicp-leave-requests
