Open-source project
victrme/Bonjourr avatar
victrme/Bonjourr

Bonjourr: an iOS start page for Chrome, Firefox, Edge and Safari

Minimalist & lightweight startpage inspired by iOS

2,127 stars220 forksTypeScriptGPL-3.0

At a glance

What is it?
Bonjourr replaces your browser's start page with an iOS-flavoured panel of search, weather, a clock, a Pomodoro and quick links, installed from each browser's store instead of built from source. The styling layer is genuinely yours to write, but nothing here shows a config file or a run command, and the dependency badge points at a manifest the repository root does not list.
Who is it for?
Bonjourr fits one profile well: a single home page you control with your own CSS, on Chrome, Firefox or Edge, with no account and no build step. It is the wrong fit for anyone who needs documented configuration, because no config file, install command or test command appears anywhere in the documentation, and for Safari, where the badge points at an iOS app instead of an extension.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Four store badges carry the install, and no build step exists

Bonjourr is an extension, so the README never gives you a package manager line, a clone step or a start command. Four badges carry the install, one each for Chrome, Firefox, Edge and Safari, and opening one lands on that store's listing page. After the install, a new tab shows search, an analog clock and quick links.

bash
https://chrome.google.com/webstore/detail/bonjourr-%C2%B7-minimalist-lig/dlnejlppicbjfcfcedcflplfjajinajd
https://addons.mozilla.org/firefox/addon/bonjourr-startpage/
https://microsoftedge.microsoft.com/addons/detail/bonjourr-%C2%B7-minimalist-l/dehmmlejmefjphdeoagelkpaoolicmid

Each of those three addresses carries the product name inside its path, which is the practical reason to believe the stores hold one build rather than three forks. What you get afterwards is the iOS look the project is built around, plus whatever each store chooses to display about permissions.

The fourth badge is where a close reading pays off, because its markdown is nested wrong: the badge image sits inside one link and the visible label inside a second.

bash
https://apps.apple.com/fr/app/bonjourr-startpage/id1615431236
https://bonjourr.fr/docs/#safari-macos

The first address sits under the /fr/ locale of the App Store and carries the app id 1615431236, so the documented Safari route runs through an iOS application rather than a macOS extension. The second is what a reader actually clicks, and it lands on the anchor named for Safari on macOS. Anyone choosing between four badges on the strength of one row of images should open that anchor before committing to Safari.

Custom CSS and custom fonts make the styling layer yours to own

Three of the listed features exist purely so that you can override the design: custom CSS styling, custom fonts and an emoji as favicon. Add multiple clock faces and dark mode and you have a start page that is a theme plus an escape hatch rather than a fixed skin.

The README treats that layer as community infrastructure rather than a private setting. It asks for new CSS snippets and new custom profiles, pointing at two separate pages under /docs/customisation/, and it asks for translations of the interface and of the website as two different jobs. At least twenty-three languages are credited to named translators at the end of the README, and the root carries a _locales/ directory beside them. That is a wide surface for a project whose pitch is minimalism.

What is missing is what an engineer reaches for first. No class name, custom property or data attribute is written down anywhere, and no page says how a custom stylesheet is registered, whether you paste it into a settings field or ship a file with the extension. Your first override means reading the rendered page in a browser inspector and working out the selectors yourself.

Every upstream change to the markup can then break snippets written by users, and nothing here lets you version or pin a stylesheet, so a broken override is hard to tell apart from a bug in the version the store just pushed.

Unsplash backgrounds and a quotes API sit beside the privacy line

Two lines in the feature list pull against each other. One reads privacy focused & no generative AI. Another reads Dynamic 4K backgrounds that change according to the mood of the day, and the contributing section asks for new Unsplash photos through a documentation page anchored at bonjourr-daylight-images. A third asks for new quotes to be added to a separate repository described as an API, victrme/i18n-quotes, which is where the words on your page come from.

So a start page with no account and no advertising still reaches two external services. Nothing says how often those requests repeat, whether a chosen background is reused from cache or refetched on every new tab, or what a request reveals about the machine that opened it. If that privacy line decides your install, measure it on a metered connection before you judge the design.

Deciding the mood of the day is a judgement about time, and for a photograph it is a judgement about light, yet it runs inside an extension your browser has just installed. Keeping that local is the better half of the trade, and the cost is the absence of any account, sign-in or sync page, so two machines running the same extension have no documented way to agree on mood, clock face or name.

The search bar claims every engine and names none of them

The search bar gets a single line in the feature list: compatible with all search engines. No engine is named, no default is picked, and no query template appears, so the claim cannot be checked from what the project publishes. This is the field an engineer tests first when leaving a browser's own start page, and it is the one described least.

Quick links are the second thing people move for, and here the documentation goes quiet in a different way. The feature list names them, the contributing section mentions custom profiles that other people create, and no page gives a link format, a bookmark import path or a worked example. A plan to carry an existing bookmark set across meets an empty section of the docs.

Weather is the third quiet one. It needs a forecast source and a location, and the README names neither. A page that greets you by your name already holds a personal detail, and pairing that with a location prompt and an unnamed forecast provider is a decision no page here explains.

The Pomodoro, the clock and a donor notification inside the app

An analog clock with multiple clock faces sits next to a Pomodoro in the same feature list, and both are browser interface work, which sits well with the stated stack of no frameworks, plain Typescript and CSS. Neither needs a server to be useful, and neither is described beyond its name: no interval length, no keyboard shortcut, no notification behaviour, no statement about whether a running timer survives a restart.

That last question is the one to test. A Pomodoro you lose by closing the tab is worthless, and the documentation gives no storage detail for it, while a separate documentation area covers settings management and contains a notifications page inside it. One anchor on that page shows how the project handles anything that leaves your machine: supporters notification. The README spells out the effect, since donating gets your name featured inside Bonjourr for the entire month after you donate, through a Ko-Fi page or a Coinbase checkout.

Read that as a design decision with a price. The project takes donations and also writes donor names into the interface it ships, fine on your own screen and a different conversation on a monitor colleagues can see. The setting sits beside the theme and the clock, so decide before you install.

The dependency badge points at a manifest the root does not list

Read the built-with section against the repository's top-level entries and the picture stops lining up. The README claims no frameworks and only small dependencies, then points its dependency badge at a raw package.json on the master branch. The root listing contains deno.json and deno.lock, and no package manifest:

bash
https://raw.githubusercontent.com/victrme/Bonjourr/master/package.json#color=outdated

Either the manifest has moved to Deno, or the badge is stale, and nothing published settles which. The effect on a reader is the same either way: no install command, no dependency list and no test command anywhere, so a fresh clone gives you a source tree with no documented way to build it or confirm that it works.

The rest of the root shows what the project does with its own code. tests/ and tasks/ are both there, so checks and automation belong to the layout, and docker/ is there too, with no page in the README or the documentation saying what it holds. AGENTS.md sits at the root as well. Contributing code rather than a CSS snippet means reverse-engineering the build from file names.

What a fork inherits, and what the store decides for you

Bonjourr is GPL-3.0, which attaches to source you redistribute rather than to the code a user merely runs in a browser, so a fork that ships a modified start page carries that licence and publishes its source, while someone who installs the store build owes nothing at all.

The upgrade path runs through the stores: the default branch last moved on 2026-10-06, the newest version a store hands you is 22.3.0 from 2026-07-05, and the two numbers before it, 22.2.1 and 22.2.0, share the date 2026-06-15. The README does not document rollback, so once a store pushes an update there is no written route back to a build you know worked. Holding a fork means tracking that branch yourself and merging forever, which is the price of taking a GPL start page in-house.

Before any of that, check what the store build asks for. No page in the docs enumerates the permissions the extension needs for weather, for Unsplash backgrounds or for your own CSS, so you are reading a store listing rather than the project's own words. That is the deciding question between a store install and a local build: whether you can live on someone else's update schedule.

Extension, hosted page, or the browser's own new tab

Three approaches to a start page are visible here, and they differ in ways that matter. The browser's own new tab page arrives with the browser and changes only when the browser does. A hosted page set as the homepage costs one address to remember, then asks the network for every new tab and keeps whatever state you set on that origin. Bonjourr's extension is the third shape: an installed bundle that takes over the tab with no page load at all.

Before any of that, there is a trial, offered as a hosted page rather than a download:

bash
https://online.bonjourr.fr

That demo sits on its own origin, and no page says whether the settings, quick links or CSS you change there carry over when you install the extension. Check that before spending an afternoon tuning it. Safari is the other case where the choice is not yours, because that badge points at an iOS app rather than something you install on a Mac.

For anyone choosing between a plain page and a hosted one, the deciding factor is where the work goes. A hosted page needs no install and gives up the custom CSS and custom font layers this project is built around. The extension keeps those layers and gives up the simplicity of a single address you can type from memory.

Editorial conclusion

Bonjourr fits one profile well: a single home page you control with your own CSS, on Chrome, Firefox or Edge, with no account and no build step. It is the wrong fit for anyone who needs documented configuration, because no config file, install command or test command appears anywhere in the documentation, and for Safari, where the badge points at an iOS app instead of an extension. Open https://online.bonjourr.fr first and check whether your own selectors survive the iOS layout, then read the store listing for permissions, because the project's own pages never itemise them.

Frequently asked questions

Does Bonjourr need an account or a paid subscription?

No account, sign-in or paid tier appears anywhere in the documentation. Funding runs through a Ko-Fi page or a Coinbase checkout, and donating adds your name to a supporters notification shown in the app for the entire month after the donation.

Can I install Bonjourr on Safari from the browser extension stores?

The Safari badge in the README points at an App Store page under the /fr/ locale for the app id 1615431236, while the link you actually click goes to the documentation anchor named for Safari on macOS. Read that anchor before choosing Safari over the other three browsers.

How do I build Bonjourr from source?

The documentation gives no install command, no dependency list and no test command. The root lists deno.json and deno.lock, while the README's dependency badge resolves a package.json, so check which manifest the branch actually uses before you try anything.

Does Bonjourr use generative AI?

One feature line reads privacy focused & no generative AI, and the stack claim is no frameworks, plain Typescript and CSS. Backgrounds come from Unsplash photos and the words come from a separate quotes API, so two external sources still feed the page.

Can I restyle Bonjourr with my own CSS?

Custom CSS styling and custom fonts are listed features, and the contributing section asks for CSS snippets and custom profiles. No selector names or registration method are documented, so the first override comes from reading the rendered page in a browser inspector.

Official sources

  1. License: GPL-3.0
  2. Project website
  3. README
  4. Releases
  5. victrme/Bonjourr on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/victrme-bonjourr.svg)](https://hysenlabs.com/projects/victrme-bonjourr)

Was this useful?