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 0000000..6dfd83a Binary files /dev/null and b/public/favicon.ico differ diff --git a/src/assets/logo-dark.png b/src/assets/logo-dark.png new file mode 100644 index 0000000..65dd11c Binary files /dev/null and b/src/assets/logo-dark.png differ 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}`); + } +});