diff --git a/.gitea/workflows/continuous_integration.yaml b/.gitea/workflows/continuous_integration.yaml index cce4c3e..ba8766b 100644 --- a/.gitea/workflows/continuous_integration.yaml +++ b/.gitea/workflows/continuous_integration.yaml @@ -254,16 +254,15 @@ jobs: deploy-test: needs: [build, test, config] - # TIJDELIJK: 'pull_request' is toegevoegd zodat elke PR ook automatisch - # naar de testomgeving deployed, om testen tijdens deze werkbranch te - # vereenvoudigen. Verwijder de 'pull_request'-conditie hieronder weer - # zodra dat niet meer nodig is. - # - # De push-naar-master- en pull_request-condities hieronder zijn bewust - # ONAFHANKELIJK van het 'deploy_test'-vinkje: de automatische testdeploy - # bij een merge naar master moet altijd blijven gebeuren. Het vinkje - # geldt alleen voor handmatige workflow_dispatch-runs. - if: (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_test == 'true') || github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref == 'refs/heads/master') + # De push-naar-master-conditie hieronder is bewust ONAFHANKELIJK van het + # 'deploy_test'-vinkje: de automatische testdeploy bij een merge naar + # master moet altijd blijven gebeuren. Het vinkje geldt alleen voor + # handmatige workflow_dispatch-runs. Een PR triggert hier bewust GEEN + # deploy: wil je een feature-branch naar test deployen, start dan zelf + # een workflow_dispatch-run op die branch met 'Deploy to Test' aangevinkt + # (Gitea: Actions → Continuous Integration → Run workflow → branch + # selecteren) - dat vereist geen (afgeronde) PR. + if: (github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_test == 'true') || (github.event_name == 'push' && github.ref == 'refs/heads/master') uses: ./.gitea/workflows/deploy.yaml secrets: inherit # Deze waarden komen uit het `env:`-blok bovenaan dit bestand, via de diff --git a/public/bryan-slop-400.jpg b/public/bryan-slop-400.jpg new file mode 100644 index 0000000..696fe8c Binary files /dev/null and b/public/bryan-slop-400.jpg differ diff --git a/public/bryan-slop-400.webp b/public/bryan-slop-400.webp new file mode 100644 index 0000000..0863a9f Binary files /dev/null and b/public/bryan-slop-400.webp differ diff --git a/public/bryan-slop-800.jpg b/public/bryan-slop-800.jpg new file mode 100644 index 0000000..4a241d0 Binary files /dev/null and b/public/bryan-slop-800.jpg differ diff --git a/public/bryan-slop-800.webp b/public/bryan-slop-800.webp new file mode 100644 index 0000000..c7e79bc Binary files /dev/null and b/public/bryan-slop-800.webp differ diff --git a/src/features/landing/components/AboutSection.tsx b/src/features/landing/components/AboutSection.tsx index 24095ef..5b249e2 100644 --- a/src/features/landing/components/AboutSection.tsx +++ b/src/features/landing/components/AboutSection.tsx @@ -2,41 +2,45 @@ import { aboutContent } from '../data/content'; export function AboutSection() { return ( -
+
-
-
-
- - // over - -

- Eén ontwikkelaar, korte lijnen -

-
+
+
+ + // over + +

+ Eén ontwikkelaar, korte lijnen +

+
+
+ + + Bryan Slop, oprichter van SLP Software + +
+
{aboutContent.paragraphs.map((paragraph) => (

{paragraph}

))}
-
-
- tech_stack -
-
    - {aboutContent.techStack.map((item, index) => ( -
  • - {item.label} — {item.value} -
  • - ))} -
-
diff --git a/src/features/landing/components/ContactSection.tsx b/src/features/landing/components/ContactSection.tsx index bf6b514..f1109c3 100644 --- a/src/features/landing/components/ContactSection.tsx +++ b/src/features/landing/components/ContactSection.tsx @@ -4,10 +4,13 @@ export function ContactSection() { const mailtoHref = `mailto:${contactInfo.email}?subject=${encodeURIComponent(contactInfo.mailSubject)}`; return ( -
+
- + // contact

diff --git a/src/features/landing/components/PackagesSection.tsx b/src/features/landing/components/PackagesSection.tsx index 0c6e0e5..1e7fead 100644 --- a/src/features/landing/components/PackagesSection.tsx +++ b/src/features/landing/components/PackagesSection.tsx @@ -10,13 +10,13 @@ export function PackagesSection() { const { data: packages, isLoading, isError } = usePackagesQuery(); return ( -
+
- + // pakketten

diff --git a/src/features/landing/components/ProcessSection.tsx b/src/features/landing/components/ProcessSection.tsx index 7d53d35..f59d63c 100644 --- a/src/features/landing/components/ProcessSection.tsx +++ b/src/features/landing/components/ProcessSection.tsx @@ -3,10 +3,13 @@ import { ProcessStep } from './ProcessStep'; export function ProcessSection() { return ( -
+
- + // werkwijze

diff --git a/src/features/landing/data/content.ts b/src/features/landing/data/content.ts index 0aca79c..ea00d16 100644 --- a/src/features/landing/data/content.ts +++ b/src/features/landing/data/content.ts @@ -43,14 +43,8 @@ export interface ProcessStepData { description: string; } -export interface TechStackItem { - label: string; - value: string; -} - export interface AboutContent { paragraphs: string[]; - techStack: TechStackItem[]; } export interface ContactInfo { @@ -61,16 +55,16 @@ export interface ContactInfo { } export const navLinks: NavLink[] = [ + { label: 'Over', href: '#over' }, { label: 'Pakketten', href: '#pakketten' }, { label: 'Werkwijze', href: '#werkwijze' }, - { label: 'Over', href: '#over' }, { label: 'Start project', href: '#contact', isCta: true }, ]; export const heroContent: HeroContent = { eyebrow: 'Web & .NET development', - heading: 'Software die gewoon werkt. Tegen een prijs die je vooraf kent.', - lead: 'SLP Software bouwt snelle websites en maatwerk .NET-oplossingen voor ondernemers die geen verrassingen willen — niet in de code, niet op de factuur.', + heading: 'SLP software: websites, apps & meer', + lead: 'Bij SLP Software kun je terecht voor maatwerk oplossingen. Of het nou gaat om een website, cms of app: wij bouwen het allemaal. Voor ondernemers die geen verrassingen willen — niet in de code, niet op de factuur.', codeLine: 'var website = slp.Bouw(uwIdee);', }; @@ -128,13 +122,13 @@ export const processSteps: ProcessStepData[] = [ label: 'stap 01 — intake', title: 'Kennismaken', description: - 'We bespreken je idee, doelgroep en wensen. Je krijgt direct een eerlijk advies over welk pakket past.', + 'We bespreken je idee, doelgroep en wensen. Je krijgt direct een eerlijk advies over welk pakket past bij jouw doel.', }, { label: 'stap 02 — bouwen', title: 'Ontwerpen & ontwikkelen', description: - 'Ik bouw je site of applicatie en houd je onderweg op de hoogte, zodat er geen verrassingen zijn bij oplevering.', + 'Ik bouw je site of applicatie en houd je onderweg op de hoogte, zodat er geen verrassingen zijn bij de oplevering.', }, { label: 'stap 03 — live', @@ -146,14 +140,8 @@ export const processSteps: ProcessStepData[] = [ export const aboutContent: AboutContent = { paragraphs: [ - 'SLP Software is het bedrijf van een web- en .NET-ontwikkelaar die gelooft dat goede software niet ingewikkeld hoeft te voelen. Geen accountmanagers of lange trajecten: je schakelt direct met degene die je project bouwt.', - 'Van een strakke landingspagina tot een applicatie met eigen back-end — de aanpak is hetzelfde: heldere afspraken, nette code en een resultaat waar je jaren mee vooruit kunt.', - ], - techStack: [ - { label: 'Front-end', value: 'HTML, CSS, JavaScript' }, - { label: 'Back-end', value: '.NET / C#' }, - { label: "API's", value: 'REST & koppelingen' }, - { label: 'Focus', value: 'snelheid & onderhoudbaarheid' }, + 'Hi, ik ben Bryan Slop van SLP Software! Ik ben een ervaren web- en .NET-ontwikkelaar. Ik geloof dat goede software niet ingewikkeld hoeft te voelen. Software zonder lange trajecten: je schakelt direct met mij, de ontwikkelaar van jouw website of applicatie.', + 'Van een strakke landingspagina tot een applicatie met eigen contentmanagementsysteem — de aanpak is hetzelfde: heldere afspraken, nette code en een resultaat waar je jaren mee vooruit kunt.', ], }; diff --git a/src/features/landing/pages/LandingPage.tsx b/src/features/landing/pages/LandingPage.tsx index b8b4ede..ffac916 100644 --- a/src/features/landing/pages/LandingPage.tsx +++ b/src/features/landing/pages/LandingPage.tsx @@ -8,9 +8,9 @@ export function LandingPage() { return ( <> + - );