Skip to content

Commit cf07cab

Browse files
authored
Merge pull request #468 from openscript-ch/feat/formation-section
Add formation page
2 parents a98aa9d + e6c21d6 commit cf07cab

File tree

13 files changed

+628
-291
lines changed

13 files changed

+628
-291
lines changed

.changeset/little-pianos-poke.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"openscript-ch-website": patch
3+
---
4+
5+
Add formation page

package.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"url": "https://github.com/openscript-ch/openscript.ch/issues"
1212
},
1313
"repository": "github:openscript-ch/openscript.ch",
14-
"packageManager": "pnpm@10.24.0",
14+
"packageManager": "pnpm@10.25.0",
1515
"scripts": {
1616
"predev": "pnpm build:sprite",
1717
"prebuild": "pnpm build:sprite",
@@ -30,15 +30,15 @@
3030
},
3131
"dependencies": {
3232
"@astrojs/check": "^0.9.6",
33-
"@astrojs/mdx": "^4.3.12",
33+
"@astrojs/mdx": "^4.3.13",
3434
"@astrojs/rss": "^4.0.14",
3535
"@astrojs/sitemap": "^3.6.0",
3636
"@fontsource/fira-mono": "^5.2.7",
3737
"@fontsource/pt-sans": "^5.2.8",
3838
"@nanostores/i18n": "^1.2.2",
39-
"astro": "^5.16.3",
40-
"astro-loader-i18n": "^0.9.1",
41-
"astro-nanostores-i18n": "^0.2.1",
39+
"astro": "^5.16.5",
40+
"astro-loader-i18n": "^0.10.9",
41+
"astro-nanostores-i18n": "^0.2.4",
4242
"embla-carousel": "^8.6.0",
4343
"embla-carousel-autoplay": "^8.6.0",
4444
"embla-carousel-class-names": "^8.6.0",
@@ -57,8 +57,8 @@
5757
"@openscript/unplugin-favicons": "^1.1.8",
5858
"@types/mdast": "^4.0.4",
5959
"@types/node": "^24.10.1",
60-
"@typescript-eslint/parser": "^8.48.0",
61-
"@vitest/coverage-v8": "4.0.14",
60+
"@typescript-eslint/parser": "^8.49.0",
61+
"@vitest/coverage-v8": "4.0.15",
6262
"astro-eslint-parser": "^1.2.2",
6363
"eslint": "^9.39.1",
6464
"eslint-config-prettier": "^10.1.8",
@@ -68,12 +68,12 @@
6868
"favicons": "^7.2.0",
6969
"globals": "^16.5.0",
7070
"jiti": "^2.6.1",
71-
"prettier": "^3.7.3",
71+
"prettier": "^3.7.4",
7272
"prettier-plugin-astro": "^0.14.1",
7373
"sirv": "^3.0.2",
7474
"typescript": "^5.9.3",
75-
"typescript-eslint": "^8.48.0",
76-
"vitest": "4.0.14"
75+
"typescript-eslint": "^8.49.0",
76+
"vitest": "4.0.15"
7777
},
7878
"pnpm": {
7979
"overrides": {

pnpm-lock.yaml

Lines changed: 287 additions & 280 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/Timeline.astro

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
---
2+
3+
---
4+
5+
<div class="timeline">
6+
<ol>
7+
<slot />
8+
</ol>
9+
</div>
10+
11+
<style>
12+
.timeline {
13+
position: relative;
14+
}
15+
16+
ol {
17+
list-style: none;
18+
margin: 0;
19+
padding: 0;
20+
21+
display: flex;
22+
flex-direction: column;
23+
gap: var(--size-gutter-big);
24+
}
25+
26+
/* spine of the timeline */
27+
.timeline::before {
28+
content: "";
29+
width: 4px;
30+
height: calc(100% + var(--size-height-divider) + (3 * var(--size-gutter-massive)));
31+
position: absolute;
32+
left: 50%;
33+
transform: translateX(-50%);
34+
background: linear-gradient(
35+
to bottom,
36+
var(--color-primary) 0.2rem,
37+
transparent 0.2rem,
38+
transparent 0.4rem,
39+
var(--color-primary) 0.4rem,
40+
var(--color-primary) 0.6rem,
41+
transparent 0.6rem,
42+
transparent 0.8rem,
43+
var(--color-primary) 0.8rem
44+
);
45+
z-index: 3; /* above potential dividers */
46+
}
47+
48+
:global(article section:last-of-type .timeline::before) {
49+
height: 100%;
50+
}
51+
52+
@media screen and (max-width: 1025px) {
53+
.timeline::before {
54+
left: 90%;
55+
}
56+
57+
.timeline::after {
58+
content: "";
59+
width: 20px;
60+
aspect-ratio: 1;
61+
clip-path: polygon(0 0, 50% 100%, 100% 0);
62+
background-color: var(--color-primary);
63+
left: calc(90% - 10px);
64+
bottom: -5px;
65+
position: absolute;
66+
z-index: 3; /* above potential dividers */
67+
}
68+
69+
.timeline::before {
70+
height: 100%;
71+
}
72+
}
73+
</style>

src/components/TimelineEntry.astro

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
3+
---
4+
5+
<li>
6+
<slot />
7+
</li>
8+
9+
<style>
10+
li {
11+
display: flex;
12+
flex-direction: column;
13+
box-sizing: border-box;
14+
padding: 1rem;
15+
background: var(--color-overlay);
16+
width: 45%;
17+
font-size: 1.2rem;
18+
}
19+
20+
li::after {
21+
content: "";
22+
width: 20px;
23+
height: 20px;
24+
border-radius: 50%;
25+
border: 4px solid var(--color-primary);
26+
background: var(--color-white);
27+
position: absolute;
28+
left: 50%;
29+
transform: translateX(-50%);
30+
z-index: 5; /* above spine */
31+
}
32+
33+
li :global(*:last-child) {
34+
margin-block-end: 0;
35+
}
36+
37+
@media screen and (min-width: 1025px) {
38+
li:nth-child(even) {
39+
align-self: flex-end;
40+
}
41+
}
42+
43+
@media screen and (max-width: 1025px) {
44+
li::after {
45+
width: 17px;
46+
height: 17px;
47+
left: 90%;
48+
}
49+
50+
li {
51+
width: 85%;
52+
}
53+
54+
li:not(:last-child) {
55+
margin-bottom: 4rem;
56+
}
57+
}
58+
</style>

src/content.config.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,22 @@ const galleriesCollection = defineCollection({
138138
),
139139
});
140140

141+
const formationCollection = defineCollection({
142+
loader: i18nContentLoader({ pattern: "**/[^_]*.yaml", base: "./src/content/formation" }),
143+
schema: extendI18nLoaderSchema(
144+
z.object({
145+
items: localized(
146+
z.array(
147+
z.object({
148+
title: z.string(),
149+
text: z.string(),
150+
}),
151+
),
152+
),
153+
}),
154+
),
155+
});
156+
141157
export const collections = {
142158
navigation: navigationCollection,
143159
pages: pagesCollection,
@@ -148,4 +164,5 @@ export const collections = {
148164
technologies: technologiesCollection,
149165
team: teamCollection,
150166
galleries: galleriesCollection,
167+
formation: formationCollection,
151168
};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
items:
2+
de:
3+
- title: Praktikumsplatz
4+
text: Im Jahr 2023 absolvierte Micael sein einjähriges Praktikum bei uns.
5+
- title: Weitere Unterstützung
6+
text: Seit Anfang 2025 programmiert Leonardo bei uns fleissig mit.
7+
en:
8+
- title: Internship Position
9+
text: In 2023, Micael completed his one-year internship with us.
10+
- title: Further Support
11+
text: Since early 2025, Leonardo has been programming diligently with us.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
items:
2+
de:
3+
- title: Web-Domain
4+
text: Bereits am 24. April 2007 wurde die Domain openscript.ch registriert.
5+
- title: Handelsregistereintrag
6+
text: Seit dem 23. Januar 2020 sind wir im Handelsregister eingetragen.
7+
en:
8+
- title: Web Domain
9+
text: The domain openscript.ch was already registered on April 24, 2007.
10+
- title: Commercial Register Entry
11+
text: We have been registered in the commercial register since January 23, 2020.

src/content/formation/office.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
items:
2+
de:
3+
- title: Temporäres Büro
4+
text: Im Februar 2021 sind wir in ein temporäres Büro im ehemaligen Swissôtel Zürich gezogen.
5+
- title: Unterstützung
6+
text: Ab Frühjahr 2021 unterstützte uns Aaron als Softwareentwickler.
7+
- title: Zweites Büro
8+
text: Seit Anfang 2022 mieten wir ein Büro in Glattbrugg.
9+
en:
10+
- title: Temporary Office
11+
text: In February 2021, we moved into a temporary office in the former Swissôtel Zürich.
12+
- title: Support
13+
text: From spring 2021, Aaron supported us as a software developer.
14+
- title: Second Office
15+
text: Since early 2022, we have been renting an office in Glattbrugg.

src/content/pages/de/past/formation.mdx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,37 @@
22
path: entstehung
33
title: Entstehung
44
---
5+
6+
import FormationSection from "../../../../layouts/sections/FormationSection.astro";
7+
import Divider from "../../../../components/Divider.astro";
8+
9+
<FormationSection class="spotlight" key="founding">
10+
<h2>Gründung</h2>
11+
12+
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 zweiter Mitgründer dazugestossen. Fortan arbeiteten die beiden daran, die ersten Softwareprojekte umzusetzen.
13+
14+
</FormationSection>
15+
16+
<Divider firstSegmentColor="var(--color-white)" fixAntialiasingBottom />
17+
18+
<FormationSection class="white-background" key="office">
19+
<h2>Büro und Mitarbeiter</h2>
20+
21+
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.
22+
23+
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.
24+
25+
In der Zwischenzeit sind auch weitere Mitarbeiter zu uns gestossen, die uns bei der Umsetzung der Projekte unterstützen.
26+
27+
</FormationSection>
28+
29+
<Divider firstSegmentColor="var(--color-white)" flipVertical fixAntialiasingTop />
30+
31+
<FormationSection class="dark-background" key="evolution">
32+
<h2>Entwicklung</h2>
33+
34+
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.
35+
36+
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!
37+
38+
</FormationSection>

0 commit comments

Comments
 (0)