Skip to main content
Welcome. This site supports keyboard navigation and screen readers. Press ? at any time for keyboard shortcuts. Press [ to focus the sidebar, ] to focus the content. High-contrast themes are available via the toolbar.
serard@dev00:~/cv

Qwant

Senior Software Developer — 2015 – mid 2017 — Full-Time On-Site

At Qwant, I worked in an Extreme Programming environment on the infrastructure and tools used to develop, test and deliver the company's applications. I designed and built Qwapp — a Scalable Software Factory connecting developer workstations, application configuration, containerized services and CI/QA workflows.

Scalable Software Factory

Problem. Developer setup and application configuration had to remain consistent across products, branches and environments. The same infrastructure services also needed to be available for development, testing and work on the next version of the tooling.

My contribution. I captured these recurring needs in Qwapp: a common model, configuration conventions and command-line tools for project setup, environment provisioning and service orchestration. The factory brought together DEV, CI, QA, UAT, developer onboarding and CI monitoring, with KISS and DRY guiding the implementation.

Result. Reproducible development environments and a reusable workflow for setting up projects and running their services. Configuration generation, provisioning, DNS mapping and environment lifecycle operations became explicit, repeatable commands.

Architecture and Developer Workflow

Qwapp organizes the tooling around three relationships: Project → Branch, Environment → Network, and Configuration → Computer. Physical machines, virtual machines and containers serve as execution targets.

  • Configuration by environment. Cascaded configuration supports overrides and parameterization, including separate development and CI configurations. Templates generate the application configuration for a selected environment.
  • A reproducible development platform. The qwapp-vagrant stack combines Vagrant, VirtualBox, Bash and SSH. Docker services run inside the Vagrant environment, while Puppet provisions dependencies.
  • Environment isolation. Infrastructure services can run in development boxes, including a separate environment for evolving the tooling without changing the existing CI infrastructure.
  • Service lifecycle and DNS. Qwapp wraps Docker Compose operations and PowerDNS mapping, alongside generation of Dockerfiles, templates and symbolic links.
  • Shared engineering infrastructure. I managed the development VMs, PowerDNS, GitLab and Jenkins services, including Jenkins build agents (nodes). Qwapp orchestrated the containerized services with Docker Compose.
  • Project onboarding. Commands initialize a project from a skeleton, clone it from GitLab and provision the development environment.

The commands expose a consistent workflow: qwapp-init, qwapp-clone, qwapp-vagrant-up --init, followed by environment operations such as qwapp-compose-up and configuration commands.

The factory also includes Jenkins matrix-job generation and CI for both application projects and the Vagrant platform itself.

CI, QA and Delivery

I integrated the development platform with GitLab, Git Flow and Jenkins, and set up QA/CI/UAT environments with a Node.js / TypeScript, CucumberJS and Selenium test stack. I also coordinated with the Corcode team in Poland on onboarding, feature specifications, test instructions and expected outcomes.

The delivery workflow brings together:

  • The development workflow: code review, CI/QA, functional validation and delivery stages.
  • Release tooling: package construction and deployment through an explicit release command.
  • Shared infrastructure across projects: FRONT, BACK and QWAPP groups, with Vagrant, Docker and configuration tooling.
  • Verification in the workflow: Jenkins jobs for CI, Everlast validation and code quality, followed by functional test scenarios and result reports.

My work also included Packer for the virtual development stack and a Raspberry Pi screen-controller system for CI monitoring: an SD-card installer with per-device configuration and an HTTPS orchestration service. The screen controllers supported shared visibility of the development and verification workflow.

CDC / Cardiweb Audit Context

My work on development infrastructure and CI/QA was presented as part of the CDC / Cardiweb technical audit ahead of the Caisse des Dépôts et Consignations' investment in Qwant.

In February 2017, the CDC invested €15 million in an €18.5 million equity round, alongside Axel Springer. Contemporary reporting puts the CDC's stake at 20%, corresponding to a €75 million post-money company valuation. These figures describe the financing context; the engineering contribution presented here is the Software Factory and its development infrastructure. Source: ZDNet, 2 February 2017 (ouvre dans une nouvelle fenêtre).

Tech Stack

Bash GitLab Git Flow Jenkins Packer Vagrant VirtualBox Docker Docker Compose Puppet PowerDNS Selenium Node.js TypeScript CucumberJS

Back to selected work · Explore my professional experience

⬇ Download