Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/little-pianos-poke.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"openscript-ch-website": patch
---

Add formation page
16 changes: 8 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@
"@fontsource/fira-mono": "^5.2.7",
"@fontsource/pt-sans": "^5.2.8",
"@nanostores/i18n": "^1.2.2",
"astro": "^5.16.3",
"astro-loader-i18n": "^0.9.1",
"astro-nanostores-i18n": "^0.2.1",
"astro": "^5.16.4",
"astro-loader-i18n": "^0.10.7",
"astro-nanostores-i18n": "^0.2.3",
"embla-carousel": "^8.6.0",
"embla-carousel-autoplay": "^8.6.0",
"embla-carousel-class-names": "^8.6.0",
Expand All @@ -57,8 +57,8 @@
"@openscript/unplugin-favicons": "^1.1.8",
"@types/mdast": "^4.0.4",
"@types/node": "^24.10.1",
"@typescript-eslint/parser": "^8.48.0",
"@vitest/coverage-v8": "4.0.14",
"@typescript-eslint/parser": "^8.48.1",
"@vitest/coverage-v8": "4.0.15",
"astro-eslint-parser": "^1.2.2",
"eslint": "^9.39.1",
"eslint-config-prettier": "^10.1.8",
Expand All @@ -68,12 +68,12 @@
"favicons": "^7.2.0",
"globals": "^16.5.0",
"jiti": "^2.6.1",
"prettier": "^3.7.3",
"prettier": "^3.7.4",
"prettier-plugin-astro": "^0.14.1",
"sirv": "^3.0.2",
"typescript": "^5.9.3",
"typescript-eslint": "^8.48.0",
"vitest": "4.0.14"
"typescript-eslint": "^8.48.1",
"vitest": "4.0.15"
},
"pnpm": {
"overrides": {
Expand Down
505 changes: 247 additions & 258 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

69 changes: 69 additions & 0 deletions src/components/Timeline.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
type Props = {
shortSpine?: boolean;
};

const { shortSpine = false } = Astro.props;

const displayTriangle = shortSpine ? "none" : "absolute";
---

<div class="timeline" data-short-spine={shortSpine}>
<ol>
<slot />
</ol>
</div>

<style define:vars={{ displayTriangle }}>
.timeline {
position: relative;
}

ol {
list-style: none;
margin: 0;
padding: 0;

display: flex;
flex-direction: column;
gap: var(--timeline-gap);
}

/* spine of the timeline */
.timeline::before {
content: "";
width: 4px;
height: calc(100% + var(--size-height-divider) + (3 * var(--size-gutter-massive)));
position: absolute;
left: 50%;
transform: translateX(-50%);
background-color: var(--color-primary);
z-index: 3; /* above potential dividers */
}

.timeline[data-short-spine="true"]::before {
height: 100%;
}

@media screen and (max-width: 1025px) {
.timeline::before {
left: 90%;
}

.timeline::after {
content: "";
width: 20px;
aspect-ratio: 1;
clip-path: polygon(0 0, 50% 100%, 100% 0);
background-color: var(--color-primary);
left: calc(90% - 10px);
bottom: -5px;
position: var(--displayTriangle);
z-index: 3; /* above potential dividers */
}

.timeline::before {
height: 100%;
}
}
</style>
56 changes: 56 additions & 0 deletions src/components/TimelineEntry.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---

---

<li>
<slot />
</li>

<style>
li {
display: flex;
flex-direction: column;
box-sizing: border-box;
padding: 1rem;
background: var(--color-overlay);
width: 45%;
}

li::after {
content: "";
width: 20px;
height: 20px;
border-radius: 50%;
border: 4px solid var(--color-primary);
background: var(--color-white);
position: absolute;
left: 50%;
transform: translateX(-50%);
z-index: 5; /* above spine */
}

@media screen and (min-width: 1025px) {
li:nth-child(even) {
align-self: flex-end;
}
}

@media screen and (max-width: 1025px) {
li::after {
left: 90%;
}

li {
width: 85%;
}

li:not(:last-child) {
margin-bottom: 4rem;
}

li::after {
width: 17px;
height: 17px;
}
}
</style>
17 changes: 17 additions & 0 deletions src/content.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,22 @@ const galleriesCollection = defineCollection({
),
});

const formationCollection = defineCollection({
loader: i18nContentLoader({ pattern: "**/[^_]*.yaml", base: "./src/content/formation" }),
schema: extendI18nLoaderSchema(
z.object({
items: localized(
z.array(
z.object({
title: z.string(),
text: z.string(),
}),
),
),
}),
),
});

export const collections = {
navigation: navigationCollection,
pages: pagesCollection,
Expand All @@ -148,4 +164,5 @@ export const collections = {
technologies: technologiesCollection,
team: teamCollection,
galleries: galleriesCollection,
formation: formationCollection,
};
15 changes: 15 additions & 0 deletions src/content/formation/evolution.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
items:
de:
- title: Lorem
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
- title: Lorem
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
- title: Lorem
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
en:
- title: Lorem
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
- title: Lorem
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
- title: Lorem
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
11 changes: 11 additions & 0 deletions src/content/formation/founding.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
items:
de:
- title: Web-Domain
text: Bereits am 24. April 2007 wurde die Domain openscript.ch registriert.
- title: Handelsregistereintrag
text: Seit dem 23. Januar 2020 sind wir im Handelsregister eingetragen.
en:
- title: Web Domain
text: The domain openscript.ch was already registered on April 24, 2007.
- title: Commercial Register Entry
text: We have been registered in the commercial register since January 23, 2020.
15 changes: 15 additions & 0 deletions src/content/formation/office.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
items:
de:
- title: Lorem
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
- title: Lorem
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
- title: Lorem
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
en:
- title: Lorem
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
- title: Lorem
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
- title: Lorem
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
34 changes: 34 additions & 0 deletions src/content/pages/de/past/formation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,37 @@
path: entstehung
title: Entstehung
---

import FormationSection from "../../../../layouts/sections/FormationSection.astro";
import Divider from "../../../../components/Divider.astro";

<FormationSection class="spotlight" key="founding">
<h2>Gründung</h2>

Obwohl die Idee und der Name schon einige Zeit zuvor existierten, wurde die Firma offiziell im Januar 2020 von Robin gegründet. Bald nach der Gründung ist Diego als zweiten Mitgründer dazugestossen. Fortan arbeiteten die beiden daran, die ersten Softwareprojekte umzusetzen.

</FormationSection>

<Divider firstSegmentColor="var(--color-white)" fixAntialiasingBottom />

<FormationSection class="white-background" key="office">
<h2>Büro und Mitarbeiter</h2>

Zuerst dachten wir, dass wir einfach von zu Hause aus arbeiten. Doch als wir davon erfuhren, dass in Oerlikon das ehemalige Swissôtel in eine WG für Studenten und Startups umgewandelt wird, haben wir uns sofort beworben und Glück gehabt. Die Geschichte kann [hier](https://www.srf.ch/news/schweiz/mit-rund-300-mitbewohnern-dieser-ehemalige-hotelturm-wird-zur-mega-wg) nachgelesen werden. Somit hatten wir von Februar 2021 bis Ende Jahr unser erstes Büro mitten in Oerlikon.

Dabei haben wir festgestellt, dass es uns sehr hilft, wenn wir uns regelmässig persönlich austauschen können. Deshalb haben wir uns entschieden, auch nach der Zwischennutzung des Swissôtels ein Büro zu mieten. Schnell haben wir ein passendes Büro in Glattbrugg gefunden, welches wir seit Anfang 2022 nutzen.

In der Zwischenzeit sind auch weitere Mitarbeiter zu uns gestossen, welche uns bei der Umsetzung unserer Projekte unterstützen.

</FormationSection>

<Divider firstSegmentColor="var(--color-white)" flipVertical fixAntialiasingTop />

<FormationSection class="dark-background" key="evolution" last>
<h2>Entwicklung</h2>

Seither haben wir uns stetig weiterentwickelt und neue Projekte realisiert, die unsere Vision und Mission unterstützen. Wir freuen uns auf die kommenden Herausforderungen und Chancen, die vor uns liegen.

Möchtest du auch Teil unserer Reise werden? Schau dir unsere [Jobs-Seite](../zukunft/jobs) an oder nimm Kontakt auf, falls du dein Projekt mit uns umsetzen möchtest!

</FormationSection>
34 changes: 34 additions & 0 deletions src/content/pages/en/past/formation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,37 @@
path: formation
title: Formation
---

import FormationSection from "../../../../layouts/sections/FormationSection.astro";
import Divider from "../../../../components/Divider.astro";

<FormationSection class="spotlight" key="founding">
<h2>Founding</h2>

Although the idea and name had existed for some time before, the company was officially founded by Robin in January 2020. Shortly after the founding, Diego joined as the second co-founder. From then on, the two worked together to implement the first software projects.

</FormationSection>

<Divider firstSegmentColor="var(--color-white)" fixAntialiasingBottom />

<FormationSection class="white-background" key="office">
<h2>Office and employees</h2>

At first, we thought we would simply work from home. But when we learned that the former Swissôtel in Oerlikon was being converted into shared accommodation for students and startups, we applied immediately and were lucky. The story can be read [here](https://www.srf.ch/news/schweiz/mit-rund-300-mitbewohnern-dieser-ehemalige-hotelturm-wird-zur-mega-wg). Thus, we had our first office in the heart of Oerlikon from February 2021 until the end of the year.

In doing so, we realized that it helps us greatly when we can exchange ideas in person regularly. Therefore, we decided to rent an office even after the interim use of the Swissôtel. We quickly found a suitable office in Glattbrugg, which we have been using since early 2022.

In the meantime, additional employees have joined us, supporting us in the implementation of our projects.

</FormationSection>

<Divider firstSegmentColor="var(--color-white)" flipVertical fixAntialiasingTop />

<FormationSection class="dark-background" key="evolution" last>
<h2>Evolution</h2>

Since then, we have continuously evolved and realized new projects that support our vision and mission. We look forward to the upcoming challenges and opportunities that lie ahead.

Would you like to become part of our journey? Check out our [jobs page](../future/jobs) or get in touch if you want to realize your project with us!

</FormationSection>
1 change: 1 addition & 0 deletions src/layouts/Shell.css
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
--color-background: #ede9df;
--color-black: #231f20;
--color-white: #fbfffb;
--color-overlay: #f7f9f3;

--size-gutter: 1rem;
--size-gutter-big: 2rem;
Expand Down
Loading