Kompetenskrav för utvecklare med bred kunskap
Programmeringsspråk
PHP: Avancerad kunskap i PHP för backend-utveckling
JavaScript/ES6+: Djup kunskap för frontend-utveckling
HTML/CSS: Goda kunskaper för webbgränssnitt och responsiv design
SQL: Grundläggande kunskaper för databashantering
Ramverk och bibliotek
WordPress: Djupgående förståelse av WordPress som CMS och utvecklingsplattform
Vue.js: Mycket god kunskap i Vue.js (version 2) för frontend-komponenter
Laravel Mix: Erfarenhet av Laravel Mix som byggverktyg
Tailwind CSS: Erfarenhet av att arbeta med Tailwind CSS för stilar
Webpack: Kunskap om Webpack för byggnation av frontend-applikationer
Composer: Erfarenhet av PHP-pakethantering med Composer
npm/Yarn: Kunskap om JavaScript-pakethantering
ACF (Advanced Custom Fields): Erfarenhet av att arbeta med ACF i WordPress
Betalningsintegrationer
Stripe: Erfarenhet av Stripe-integration för betalningar
Swish: Kunskap om Swish-betalningar
Klarna: Erfarenhet av Klarna-integration
Fortnox: Kunskap om integration med Fortnox för ekonomihantering
Testning och kvalitetssäkring
PHPUnit: Erfarenhet av att skriva tester med PHPUnit
Jest: Kunskap om JavaScript-testning med Jest
Kahlan: Erfarenhet av testning med Kahlan
Verktyg och miljöer
Git: God vana att arbeta med versionshantering
Dotenv: Erfarenhet av miljökonfigurationer
Cross-browser testing: Kunskap om testning mot olika webbläsare
Docker: Grundläggande kunskap kan vara fördelaktigt
API-hantering
REST API: Erfarenhet av att arbeta med RESTful-gränssnitt
WordPress REST API: Specifik kunskap om WordPress REST API
GuzzleHTTP: Erfarenhet av HTTP-klientbiblioteket för PHP
Databaser
MySQL/MariaDB: Kunskap om databashantering med MySQL eller MariaDB
Databasmigrering: Erfarenhet av att hantera databasmigrationer
Övrigt
PDF-generering (mPDF): Erfarenhet av att generera PDF-filer med mPDF
Bugsnag: Kunskap om felrapportering och övervakning
WordPress Themes: Erfarenhet av att utveckla WordPress-teman
Säkerhet: Kunskap om webbutvecklingssäkerhet
Responsiv design: Erfarenhet av att skapa mobilanpassade gränssnitt
Formulärhantering och validering: Kunskap om VeeValidate och liknande bibliotek
Internationalisering: Kunskaper i att skapa flerspråkiga webbplatser (Weglot)
Domänkunskap
E-handel: Förståelse för e-handelslösningar och kundprocesser
Skogsfaddersystem: Fördelaktigt att förstå bevarandemodeller för skog
Donationshantering: Erfarenhet av system för donationer och gåvohantering
Detta projekt är en WordPress-baserad webbplats med en modern frontend byggd med Vue.js och Tailwind CSS. Systemet hanterar diverse betalningsmetoder och inkluderar funktioner för skogsdonationer, gåvobevis och användarkonton. En utvecklare behöver både bred kunskap inom WordPress-utveckling och modern JavaScript-arkitektur för att effektivt kunna bidra till projektet.
PHP-kodens struktur och arkitektur
WordPress-tema
Child Theme-struktur: Koden är strukturerad som ett WordPress child theme (”Naturarvet Child Theme”) som bygger på ett bastema kallat ”naturarvet”. Detta framgår av style.css som innehåller meta-informationen för temat.
Template-filer: Standard WordPress-mallfiler som single.php, page.php, front-page.php används för att rendera olika typer av sidor.
Arkitektur och design
MVC-liknande struktur: Trots att det är ett WordPress-tema, följer implementationen en MVC-liknande struktur med:
– Controllers (i app/Controller/) som hanterar REST API-endpoints och användarinteraktioner
– Models (i app/Db/) som hanterar dataaccess och databasinteraktioner
– Views (i templates/-mappen) som hanterar presentationslagret
Dependency Injection Pattern: Koden använder ett tydligt dependency injection-mönster genom klassen DomainInstanceCreator som fungerar som en service container/locator. Detta ger en mer testbar och modulär kodarkitektur än traditionell WordPress-kod.
Namespaces: Koden använder PHP-namespaces (namespace Naturarvet2) för att organisera koden och undvika namnkonflikter.
REST API-integrationer
Custom REST API Endpoints: Projektet utökar WordPress REST API med egna endpoints genom register_rest_route()-funktioner i rest-endpoints.php.
Controllers: Varje REST API-endpoint hanteras av specifika controller-klasser (som ForestShopController, StripeController, etc.) som har ansvar för specifika delar av applikationen.
Domänmodell och affärslogik
Domänspecifika klasser: Applikationen har domänspecifika klasser som ForestShop, Skogsfadder och Newsletter som hanterar affärslogik.
Databaskoppling: Klasser under app/Db/ (som WpUser, StripePurchase, SwishPurchase) fungerar som repositories/models för databasoperationer.
Betalningsintegrationer
Multipla betalningssätt: Koden integrerar med flera betalningssätt som Stripe, Swish, Klarna och Fortnox genom dedikerade klasser i app/Client/-mappen.
Faktureringshantering: Det finns en komplex logik för att hantera fakturor, betalningar och kvitton genom integration med Fortnox.
Backend-Frontend-integration
REST API för Vue.js: Backend-koden exponerar REST API-endpoints som används av Vue.js-komponenterna i frontend.
WordPress-hooks: Koden använder WordPress-hooks (add_action, add_filter) för att integrera med WordPress-systemet.
Säkerhet och konfiguration
Miljövariabler: Applikationen använder Dotenv för konfiguration och känsliga uppgifter.
Avsäkrade REST-endpoints: REST API-endpoints inkluderar permission_callbacks för säker access.
Specialfunktioner
PDF-generering: Koden har funktionalitet för att generera PDF-certifikat för skogsrutor med mPDF.
E-postnotifieringar: Systemet har automatiska e-postnotifieringar för beställningar och gåvobevis.
Admin-paneler: Temat lägger till egna admin-sidor i WordPress för att hantera templates och inställningar.
Koden visar en mycket mer strukturerad och objektorienterad approach än vad som är vanligt i traditionella WordPress-teman, med tydliga ansvarsområden och separation av concerns. Detta gör koden mer skalbar och underhållsbar, men kräver också mer kunskap om moderna PHP-designmönster och principer än vad som traditionellt förknippas med WordPress-utveckling.