feat: Building the app in it's first version

This commit is contained in:
gauvainboiche
2026-09-15 23:12:57 +02:00
parent 34792e2782
commit 64a3d9b556
42 changed files with 2699 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
{
"history": {
"title": "History of the Republican calendar",
"sections": [
{
"heading": "A revolutionary creation",
"paragraphs": [
"The French Republican calendar was created by the National Convention during the French Revolution. It came into force on 15 Vendémiaire, Year II (6 October 1793), with a retroactive start date of 1 Vendémiaire, Year I — 22 September 1792, the day after the abolition of the monarchy, proclaimed the first day of the \"era of the French\".",
"Like the metric system, the calendar grew out of the revolutionaries' wish to base the measurement of time on the decimal system and to replace the Gregorian calendar, associated with Christianity and the Ancien Régime.",
"The year was split into twelve thirty-day months, grouped into three ten-day décades, replacing the seven-day week and its Sunday with a ten-day rest cycle. Five complementary days (six in sextile years) closed out the year outside of any month."
]
},
{
"heading": "The Romme commission and Fabre d'Églantine",
"paragraphs": [
"Tasked by the Convention with reforming the calendar, deputy Gilbert Romme worked with several members of the Academy of Sciences (Lagrange, Monge, Lalande, Pingré...). His report, presented on 20 September 1793, laid out the calendar's core principles: a year anchored to the autumnal equinox, a decimal division of time, and twelve thirty-day months.",
"The poetic month names — Vendémiaire, Brumaire, Frimaire, Nivôse, Pluviôse, Ventôse, Germinal, Floréal, Prairial, Messidor, Thermidor, Fructidor — were coined by the poet and deputy Fabre d'Églantine and approved by the Convention on 24 October 1793. Each day was further associated with an agricultural product or a farming tool."
]
},
{
"heading": "A short but memorable life",
"paragraphs": [
"The Republican calendar remained in force for just over twelve years, until it was abolished by Napoleon I effective 1 January 1806, for practical as much as political and religious reasons.",
"It was briefly revived by the Paris Commune in 1871, and left a lasting mark on the French language through several given names (Nivôse, Floréal...) and the expression \"sans-culotte\"."
]
}
]
},
"leapYears": {
"title": "Sextile years",
"sections": [
{
"heading": "A contradiction in the founding decree",
"paragraphs": [
"The decree of 4 Frimaire, Year II (24 November 1793) set two hard-to-reconcile rules: the year begins on the day of the true autumnal equinox at the Paris Observatory (Article III), and a sextile year — the Republican equivalent of a leap year — is inserted every four years (Article X).",
"In reality, the interval between two successive equinoxes is not perfectly constant. During the calendar's actual period of use (Year I to Year XIV), sextile years did fall every four years (Year III, Year VII, Year XI), but astronomers already knew this regularity would not hold indefinitely."
]
},
{
"heading": "Romme's reform proposal",
"paragraphs": [
"On 19 Floréal, Year III (8 May 1795), Romme proposed to settle the contradiction by dropping the reference to the observed equinox in favour of a predictable, perpetual arithmetic rule: a sextile year every four years (the first being Year IV), except centennial years — which stay common unless their number is divisible by 400 — with the exception of the fortieth century, which remains common.",
"This rule closely mirrors the Gregorian leap-year rule, simply shifted by one year. Romme was arrested shortly afterwards and took his own life in prison, so his reform was never officially adopted — but it remains the reference for any perpetual Republican calendar, and it is the one used by this converter."
]
},
{
"heading": "The rule used here",
"paragraphs": [
"A Republican year is therefore sextile (366 days) if its number is divisible by 4, unless it is divisible by 100 without being divisible by 400, and unless it is divisible by 4000. Every other year has 365 days, split into twelve thirty-day months plus five complementary days."
]
}
]
},
"complementaryDays": {
"title": "The complementary days",
"sections": [
{
"heading": "Closing out the year",
"paragraphs": [
"Twelve thirty-day months only add up to 360 days: five more days are needed to complete a tropical year, six in sextile years. These days, first called \"épagomènes\" and then \"sans-culottides\" by the decree of 4 Frimaire, Year II, were renamed \"complementary days\" by the decree of 7 Fructidor, Year III (24 August 1795).",
"Sitting outside any month or décade, they carry no décadi name and were devoted to public rejoicing and festivities marking the end of the Republican year, roughly between 17 and 22 September on the Gregorian calendar."
]
},
{
"heading": "The five (or six) days",
"paragraphs": [
"The Day of Virtue, the Day of Genius, the Day of Labour, the Day of Opinion and the Day of Rewards make up the five complementary days of every Republican year.",
"In sextile years — every four years under Romme's perpetual rule — a sixth day is added, the Day of the Revolution, devoted to national games in memory of the Republic's founding.",
"The four-year span between two sextile years is called a \"Franciade\", echoing the Olympiads of ancient Greece."
]
}
]
}
}
+48
View File
@@ -0,0 +1,48 @@
{
"site": {
"title": "Republican Calendar",
"tagline": "Perpetual converter"
},
"nav": {
"menuLabel": "Menu",
"home": "Home",
"about": "About",
"aboutHistory": "History of the calendar",
"aboutLeapYears": "Sextile years",
"aboutComplementaryDays": "The complementary days",
"language": "Language"
},
"home": {
"todayHeading": "Today is",
"resultHeading": "Converted date",
"gregorianEquivalent": "Gregorian equivalent",
"sextileBadge": "Sextile year",
"decadeLabel": "Décade",
"dayOfYearLabel": "Day of the year",
"yearLabel": "Year"
},
"form": {
"title": "Convert another date",
"dateLabel": "Gregorian date (DD/MM/YYYY)",
"submit": "Convert",
"todayButton": "Back to today",
"helpText": "Pick a day, month and year: the form checks automatically that the date actually exists.",
"errorInvalid": "This date does not exist in the Gregorian calendar.",
"errorBeforeEpoch": "The Republican calendar starts on 22 September 1792 (1 Vendémiaire, Year I). Please choose a later date.",
"errorGeneric": "Something went wrong while converting this date."
},
"weekdays": {
"monday": "Monday",
"tuesday": "Tuesday",
"wednesday": "Wednesday",
"thursday": "Thursday",
"friday": "Friday",
"saturday": "Saturday",
"sunday": "Sunday"
},
"footer": {
"text": "Dates computed with the perpetual arithmetic rule proposed by Gilbert Romme (19 Floréal, Year III / 8 May 1795).",
"sourceNote": "Historical content adapted from the \"French Republican calendar\" reference article."
},
"loading": "Loading…"
}
+135
View File
@@ -0,0 +1,135 @@
{
"seasonSuffix": {
"autumn": "Ending in \"-aire\" (from Latin -arius)",
"winter": "Ending in \"-ôse\" (from Latin -osus, \"endowed with\")",
"spring": "Ending in \"-al\" (from Latin -alis)",
"summer": "Ending in \"-idor\" (from Greek dôron, \"gift\")"
},
"months": {
"vendemiaire": {
"name": "Vendémiaire",
"season": "autumn",
"period": "22/23/24 September 21/22/23 October",
"etymology": "From Latin vindemia, \"grape harvest\".",
"description": "The first month of the Republican year opens autumn and starts on equinox day. Fabre d'Églantine named it after the grape harvest that closes the work of the vineyard."
},
"brumaire": {
"name": "Brumaire",
"season": "autumn",
"period": "22/23/24 October 20/21/22 November",
"etymology": "From Latin bruma, \"fog, mist\".",
"description": "The month of the mists and fog that blanket the countryside between October and November."
},
"frimaire": {
"name": "Frimaire",
"season": "autumn",
"period": "21/22/23 November 20/21/22 December",
"etymology": "From the French word \"frimas\", the damp cold of late autumn.",
"description": "The last month of autumn, marked by the first frosts, alternately dry and humid, heralding winter."
},
"nivose": {
"name": "Nivôse",
"season": "winter",
"period": "21/22/23 December 19/20/21 January",
"etymology": "From Latin nix, nivis, \"snow\".",
"description": "The first month of winter, named for the snow that whitens the ground between December and January."
},
"pluviose": {
"name": "Pluviôse",
"season": "winter",
"period": "20/21/22 January 18/19/20 February",
"etymology": "From Latin pluvia, \"rain\".",
"description": "The month of abundant rainfall typically falling between January and February."
},
"ventose": {
"name": "Ventôse",
"season": "winter",
"period": "19/20/21 February 20/21 March",
"etymology": "From Latin ventosus, \"windy\".",
"description": "The last month of winter, that of squalls and drying winds between February and March."
},
"germinal": {
"name": "Germinal",
"season": "spring",
"period": "21/22 March 19/20 April",
"etymology": "From Latin germen, \"sprout, germ\".",
"description": "The first month of spring, that of budding and rising sap between March and April."
},
"floreal": {
"name": "Floréal",
"season": "spring",
"period": "20/21 April 19/20 May",
"etymology": "From Latin flos, floris, \"flower\".",
"description": "The month when flowers bloom, between April and May."
},
"prairial": {
"name": "Prairial",
"season": "spring",
"period": "20/21 May 18/19 June",
"etymology": "From the French word \"prairie\", meadow.",
"description": "The last month of spring, that of cheerful abundance and the meadow harvest between May and June."
},
"messidor": {
"name": "Messidor",
"season": "summer",
"period": "19/20 June 18/19 July",
"etymology": "From Latin messis, \"harvest\", and Greek dôron, \"gift\".",
"description": "The first month of summer, that of rippling ears of wheat and golden harvests between June and July."
},
"thermidor": {
"name": "Thermidor",
"season": "summer",
"period": "19/20 July 17/18 August",
"etymology": "From Greek thermos, \"heat\", and dôron, \"gift\".",
"description": "The month of heat, both solar and terrestrial, that sets the air ablaze between July and August."
},
"fructidor": {
"name": "Fructidor",
"season": "summer",
"period": "18/19 August 16/17 September",
"etymology": "From Latin fructus, \"fruit\", and Greek dôron, \"gift\".",
"description": "The last month of the year, that of the fruit ripened golden by the sun between August and September."
}
},
"decadeDays": {
"primidi": "Primidi",
"duodi": "Duodi",
"tridi": "Tridi",
"quartidi": "Quartidi",
"quintidi": "Quintidi",
"sextidi": "Sextidi",
"septidi": "Septidi",
"octidi": "Octidi",
"nonidi": "Nonidi",
"decadi": "Décadi"
},
"complementaryDays": {
"title": "Complementary days (sans-culottides)",
"days": {
"virtue": {
"name": "Day of Virtue",
"description": "First complementary day, dedicated to civic virtue."
},
"genius": {
"name": "Day of Genius",
"description": "Second complementary day, celebrating genius and inventiveness."
},
"labour": {
"name": "Day of Labour",
"description": "Third complementary day, honouring work."
},
"opinion": {
"name": "Day of Opinion",
"description": "Fourth complementary day, devoted to freedom of opinion."
},
"rewards": {
"name": "Day of Rewards",
"description": "Fifth complementary day, dedicated to public rewards."
},
"revolution": {
"name": "Day of the Revolution",
"description": "Sixth complementary day, added only in sextile years, commemorating the Revolution with national games."
}
}
}
}