Det finns massor av innehållshanteringssystem (eng: Content Managing System, CMS) där ute. WordPress, Joomla, Drupal, Ghost, Statamic, Sanity... listan känns oändlig och växer hela tiden. Med många års erfarenhet av Wordpress och Drupal (20-25 år) ville göra något annat för min blogg. Jag ville se om jag kunde.

Allt började egentligen med en programmeringskurs på Udemy. En av uppgifterna var att skapa en hemsida för mina projekt men när portfolio-delen var på plats kände jag att något saknades. Ett CV att hänvisa till var nästa naturliga steg, när jag väl hade det insåg jag att en blogg – en plats där jag kunde dela mina tankar och reflektioner kring projekten eller kanske bara mitt liv som kodare – inte alls var en dum idé. Och vips, så var vi här.

Att bygga sitt eget CMS är kanske inte den enklaste vägen. Men för mig handlade det om att få fullständig kontroll, ett minimalt fotavtryck och total frihet att forma precis det jag ville ha. I det här inlägget tänkte jag dela med mig av varför jag valde att programmera ett CMS, vad mitt lilla system innehåller – och vad du som utvecklare kan vinna (och kanske förlora) på att utforska det från min GitHub.

Så, vad är det jag har byggt?

Jag ser det som en lättviktig, modulär och helt öppen plattform, byggd med Flask. Det är inte tänkt att konkurrera med något annat CMS utan snarare en personlig grund för dem som, liksom jag, gillar att kunna bygga själv.

I dagsläget innehåller det:

  • En blogg med stöd för kategorier, bilder och kommentarer.
  • En portfolio för att visa upp projekt, komplett med bildhantering och kategorier.
  • En CV-sida som enkelt kan uppdateras via ett formulär.
  • En central adminpanel där allt innehåll hanteras.
  • Inbyggt stöd för filuppladdning, en texteditor (Quill), captcha för att stoppa spam, behörighetshantering och mer.

Det är ett system som kombinerar min personliga webbplats, blogg och portfolio i ett och samma kodpaket – utan att jag blir inlåst i någon annans system. Det är min kod, på mina villkor.

Varför jag tror det kan vara intressant för dig (och vad du bör tänka på)

Det finns några saker jag personligen tycker är så roligt med att ha byggt det här:

Fördelarna med full kontroll:

  • Total frihet: Du har kontroll över varje rad kod. Behöver du en ny innehållstyp? En specifik relation mellan objekt? Vill du byta ut texteditorn? Hela backend och frontend är din att forma.
  • Lär dig Flask och SQLAlchemy på riktigt: För mig har det här varit en fantastisk läroresa. Att dyka ner i det här projektet är ett utmärkt sätt att förstå hur en Flask-applikation är strukturerad i ett användbart projekt – hur man använder blueprints, migrationer, hanterar filuppladdningar och bygger robusta formulär.
  • Minimalt och snabbt: Jag har medvetet hållit det avskalat. Ingen tung admin-panel som laddar dussintals HTTP-förfrågningar bara för att visa en rubrik. Koden är optimerad för enkelhet och snabbhet och det är trevligt att slippa all "bloat" som ibland följer med större system.
  • Ingen "inlåsning": All din data ligger hos dig. Det finns ingen extern CMS-plattform att installera eller något konto att skapa. Vill du flytta din blogg? Det är bara att zippa ihop mappen och flytta den. Din data är din egen.

Men också några saker att tänka på:

  • Du behöver vara bekväm med koden: Om du bara vill klicka på "Installera", välja ett tema och börja skriva direkt, då är det här nog inte rätt verktyg för dig. Du behöver vara okej med att köra flask db upgrade, hantera en .env-fil och veta var koden bor. Det kräver lite mer handpåläggning än ett färdigt WordPress-paket.
  • Du är din egen support: Det finns inga tusentals forumtrådar eller YouTube-guider som täcker just mitt system. Det är bara du, koden och dokumentationen (som jag jobbar på att göra så bra som möjligt!). Men ärligt talat – för mig är det också en av de största fördelarna, eftersom det tvingar dig att förstå vad som faktiskt händer under huven.

Vem kan det vara för?

Jag tänker att det här kan vara intressant för dig som:

  • Är utvecklare (eller håller på att lära dig) och letar efter en minimalistisk, utbyggbar startpunkt för dina egna projekt.
  • Vill kombinera olika typer av innehåll på en och samma plats: blogg, portfolio, CV, med mera.
  • Vill slippa de större, mer komplexa systemen och verkligen lära dig något nytt på vägen.

Nyfiken? Ladda ner och testa!

Du hittar hela projektet här på GitHub: https://github.com/Majsan-T/MajaTingWorks

Känn dig fri att klona det, leka med det – och framför allt, förbättra det gärna! Pull requests och frågor är varmt välkomna. Jag ser fram emot att höra vad du tycker.