From 25db9a8c3fc5d9aa85ab3e2275cd71cca241dd26 Mon Sep 17 00:00:00 2001 From: msa46 Date: Sun, 2 Aug 2026 16:24:35 +0200 Subject: [PATCH] feat: add Incognito branding and wiki landing pages --- astro.config.mjs | 18 +++++++ docs/brand-sources.md | 23 +++++++++ public/favicon.ico | Bin 0 -> 1150 bytes src/assets/logo-dark.png | Bin 0 -> 22203 bytes src/assets/logo.svg | 75 ++++++++++++++++++++++++++++ src/config/sidebar.mjs | 9 +++- src/content/docs/about-incognito.md | 10 ++++ src/content/docs/index.mdx | 54 ++++++++++++++++++-- src/styles/incognito.css | 49 ++++++++++++++++++ tests/project-structure.test.mjs | 44 +++++++++++++++- 10 files changed, 277 insertions(+), 5 deletions(-) create mode 100644 docs/brand-sources.md create mode 100644 public/favicon.ico create mode 100644 src/assets/logo-dark.png create mode 100644 src/assets/logo.svg create mode 100644 src/content/docs/about-incognito.md create mode 100644 src/styles/incognito.css diff --git a/astro.config.mjs b/astro.config.mjs index eeeacce..9b5d23d 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -14,6 +14,24 @@ export default defineConfig({ description: 'Academic knowledge and student resources maintained by MSV Incognito.', lastUpdated: true, sidebar, + logo: { + light: './src/assets/logo-dark.png', + dark: './src/assets/logo.svg', + alt: 'MSV Incognito', + replacesTitle: true, + }, + favicon: '/favicon.ico', + customCss: ['./src/styles/incognito.css'], + social: [ + { + icon: 'external', + label: 'MSV Incognito website', + href: 'https://msvincognito.nl/', + }, + ], + editLink: { + baseUrl: 'https://git.msvincognito.nl/Incognito-Tech/Incognito-Wiki/_edit/main/', + }, }), ], }); diff --git a/docs/brand-sources.md b/docs/brand-sources.md new file mode 100644 index 0000000..18d1ed4 --- /dev/null +++ b/docs/brand-sources.md @@ -0,0 +1,23 @@ +# Incognito brand sources + +Official assets were captured on 2026-08-02 from the following public sources: + +| Source URL | Destination | Captured | +| --- | --- | --- | +| https://msvincognito.nl/assets/logo.svg | `src/assets/logo.svg` | 2026-08-02 | +| https://msvincognito.nl/assets/logo-dark.png | `src/assets/logo-dark.png` | 2026-08-02 | +| https://msvincognito.nl/favicon.ico | `public/favicon.ico` | 2026-08-02 | + +The association stylesheet supplied these recovered brand colours: + +| Role | Colour | +| --- | --- | +| Ink/navy | `#071526` | +| Dark navy | `#10253d` | +| Primary blue | `#155eef` | +| Bright blue | `#2f7cff` | +| Light blue | `#eaf2ff` | +| Soft blue | `#eef4ff` | +| Pink accent | `#ef3b8f` | +| Orange accent | `#f57a32` | +| Violet accent | `#5746d8` | diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6dfd83a0d62d12ff825dc243b91e78ff1f58552b GIT binary patch literal 1150 zcmZvbUr5?f6vuCEQxRmnOoB)TK5YGYXod+JMI#D~P+E*&6Tw`qhenN92C~dDMhq++ zHNtvHq9tt*8)H!;*+L(ZJ&j~fwmpb*YtB;3iTmw)Vn2`{{^a95zkAO2+;h*pKgLS% zD=TAXPyczwR;xGL+uK)QAA`7nL}g{=r&KB> z<8}O~)9Jj3{oB^ow$|F(>VthE&{D1+Am#J<^t>(@460z4j*N`h;NwIhQM|9O@2N(k z*~EJW@H)~GnU0Q*6<+W6`)_o0buDddY-qc?yO-dnx{oXti?yk#={0PsgV)mdOD2;= zVzF2`pJRG@`T^EWKx3PqpEs#gst<@u+wJyY?B!*V9GTVC)myxt>PNlr5XV(lR|jWi zX8NsG>tpmPJT)~ngnqt&?-cNLob>ecxC-=adwaVX{v2z9ZFc_ZypHF(d-rI%xcszc|?RMY8dIqX_ zVq#*rrKRN+;%Q%8V`JmnKp>#*?d^5a`@q1!lR`b&X0v%#E|(uDmC6w9+2L>uFDxt= zah7jLgSx-tu8isRdT(uQtzW1&nM`iP{Q(J(0;dXv;xqC*L@#LFJo4{HqtWuo$;lz1 zp3V+2v~T{bXrx|b1_uWnxMQC6^>v+4$G>lFZ8cLYpd54-)Jw{72oj-CsE&^@o6Umz5*i;Le`D246tH&e+$Rm@{GH*Qn_jcYzYkMC|EBeCU9SF!m3#P3`jl literal 0 HcmV?d00001 diff --git a/src/assets/logo-dark.png b/src/assets/logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..65dd11ce626169347b9250361a2b2d1895fae6c8 GIT binary patch literal 22203 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 Y@%laFgIB_r(>mFkT85gn>US~!2cKsiA^-pY literal 0 HcmV?d00001 diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..2864da7 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1,75 @@ + + diff --git a/src/config/sidebar.mjs b/src/config/sidebar.mjs index 31a3381..df173a7 100644 --- a/src/config/sidebar.mjs +++ b/src/config/sidebar.mjs @@ -1 +1,8 @@ -export const sidebar = [{ label: 'Home', link: '/' }]; +export const sidebar = [ + { label: 'Home', link: '/' }, + { label: 'About Incognito', link: '/about-incognito/' }, + { label: 'Bachelor', items: [] }, + { label: 'Master AI', items: [] }, + { label: 'Master DSDM', items: [] }, + { label: 'Useful Information', items: [] }, +]; diff --git a/src/content/docs/about-incognito.md b/src/content/docs/about-incognito.md new file mode 100644 index 0000000..7af555f --- /dev/null +++ b/src/content/docs/about-incognito.md @@ -0,0 +1,10 @@ +--- +title: About Incognito +description: Learn more about MSV Incognito, the study association behind this wiki. +--- + +# MSV Incognito + +MSV Incognito is the study association for the Department of Data Science & Artificial Intelligence at Maastricht University. + +Visit the [MSV Incognito website](https://msvincognito.nl/) to learn more about the association, its activities, and opportunities to become active in one of its committees. diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index 900a425..b51dbc4 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -1,6 +1,54 @@ --- -title: Home -description: Academic knowledge and student resources maintained by MSV Incognito. +title: Incognito Wiki +description: Academic knowledge and student resources for Data Science and AI at Maastricht University. +template: splash +editUrl: false --- -Migration in progress. +import { CardGrid, LinkButton, LinkCard } from '@astrojs/starlight/components'; + +# Welcome to the knowledge base of MSV Incognito + +MSV Incognito is the study association for the Department of Data Science & Artificial Intelligence at Maastricht University. This wiki brings together study information and course resources for the programmes we support. + +

+ Visit MSV Incognito +

+ +## Explore the wiki + + + + + + + + + +## Maastricht University + +Maastricht University (UM) is the youngest university in the Netherlands. Its “Leading in Learning” approach is closely associated with Problem-Based Learning (PBL): students work in small tutorial groups to analyse problems, exchange knowledge, and set their learning goals together. This approach connects education with independent research and collaboration. + +## Data Science & Knowledge Engineering + +The programmes cover the integration of knowledge into computer systems to solve complex problems that ordinarily need significant human expertise. The field connects mathematical logic, artificial intelligence, data mining, machine learning, decision support, knowledge management, and cognitive science. + +

+ Watch the programme video on YouTube +

+ +### Bachelor + +The bachelor’s programme includes Java and Matlab as primary languages, with Prolog and C/C++ available as optional languages, alongside LaTeX. Its Project-Centred Learning (PCL) approach has students work in small groups throughout a semester on phases of one project, such as traffic simulation, ECG separation, multi-agent surveillance, or speaker recognition. + +### Master’s programmes + +**Artificial Intelligence** focuses on developing and applying intelligent systems that can learn, reason, and collaborate. Research areas include machine learning, information retrieval, intelligent search, and multi-agent systems. + +**Operations Research** focuses on optimisation and decision-making with applied mathematical tools and models. Research areas include signal processing, mathematical modelling and simulation, bioinformatics, and evolutionary game theory. + +## Useful official links + +- [MSV Incognito website](https://msvincognito.nl/) +- [Maastricht University department website](https://www.maastrichtuniversity.nl/about-um/faculties/humanities-and-sciences/department-data-science-knowledge-engineering) +- [Maastricht University ICT manuals](https://www.maastrichtuniversity.nl/support/ict-services/manuals-and-information) diff --git a/src/styles/incognito.css b/src/styles/incognito.css new file mode 100644 index 0000000..2544204 --- /dev/null +++ b/src/styles/incognito.css @@ -0,0 +1,49 @@ +/* Official Incognito palette, applied through Starlight's public design tokens. */ +:root { + --incognito-ink: #071526; + --incognito-navy: #10253d; + --incognito-primary: #155eef; + --incognito-bright: #2f7cff; + --incognito-light: #eaf2ff; + --incognito-soft: #eef4ff; + --incognito-pink: #ef3b8f; + --incognito-orange: #f57a32; + --incognito-violet: #5746d8; + + --sl-color-accent-low: #10253d; + --sl-color-accent: #155eef; + --sl-color-accent-high: #eaf2ff; + --sl-color-text-accent: #2f7cff; + --sl-color-bg-accent: #eaf2ff; +} + +:root[data-theme='light'] { + --sl-color-text: #10253d; + --sl-color-text-accent: #155eef; + --sl-color-accent-low: #eef4ff; + --sl-color-accent: #155eef; + --sl-color-accent-high: #10253d; + --sl-color-bg-accent: #155eef; +} + +.status-empty, +.status-missing { + border-inline-start: 0.25rem solid var(--incognito-violet); + border-radius: 0.25rem; + padding: 0.875rem 1rem; +} + +.status-empty { + background: var(--incognito-soft); + color: var(--incognito-navy); +} + +.status-missing { + background: color-mix(in srgb, var(--incognito-orange) 13%, transparent); + border-inline-start-color: var(--incognito-orange); +} + +:root:not([data-theme='light']) .status-empty { + background: color-mix(in srgb, var(--incognito-violet) 22%, transparent); + color: var(--sl-color-gray-1); +} diff --git a/tests/project-structure.test.mjs b/tests/project-structure.test.mjs index b8cb9eb..3fea342 100644 --- a/tests/project-structure.test.mjs +++ b/tests/project-structure.test.mjs @@ -1,5 +1,5 @@ import assert from 'node:assert/strict'; -import { readFile } from 'node:fs/promises'; +import { readFile, stat } from 'node:fs/promises'; import test from 'node:test'; test('package scripts expose the local workflow', async () => { @@ -16,3 +16,45 @@ test('Astro configuration is environment-portable', async () => { assert.match(config, /process\.env\.BASE/); assert.match(config, /starlight\(/); }); + +test('Incognito branding assets and configuration are present', async () => { + for (const asset of [ + 'public/favicon.ico', + 'src/assets/logo.svg', + 'src/assets/logo-dark.png', + ]) { + const details = await stat(asset); + assert.ok(details.size > 0, `${asset} should not be empty`); + } + + const config = await readFile('astro.config.mjs', 'utf8'); + assert.match(config, /customCss/); + assert.match(config, /logo/); + assert.match(config, /dark:\s*'\.\/src\/assets\/logo\.svg'/); + assert.match(config, /light:\s*'\.\/src\/assets\/logo-dark\.png'/); + assert.match(config, /favicon/); + assert.match(config, /https:\/\/msvincognito\.nl\//); +}); + +test('the landing and association pages are available', async () => { + for (const page of [ + 'src/content/docs/index.mdx', + 'src/content/docs/about-incognito.md', + ]) { + const details = await stat(page); + assert.ok(details.size > 0, `${page} should not be empty`); + } +}); + +test('landing page navigation uses the migration manifest destinations', async () => { + const landingPage = await readFile('src/content/docs/index.mdx', 'utf8'); + for (const destination of [ + './bachelor/', + './master-ai/', + './master-dsdm/', + './useful-information/', + './about-incognito/', + ]) { + assert.ok(landingPage.includes(`href="${destination}"`), `missing ${destination}`); + } +});