Skip to content

Instantly share code, notes, and snippets.

@lejonmanen
lejonmanen / fullstack.md
Created September 3, 2026 15:43
Checklista för att sätta upp fullstack-projekt med Node.js

Skriv i terminalen

# Skapa projekt och gå in i dess mapp
npm create vite@latest
cd awesome/

# Skapa mapp för kod och fil för serverkoden
mkdir backendSrc
echo "console.log('Hello from server')" > backendSrc/server.ts
@lejonmanen
lejonmanen / predicate.ts
Created August 20, 2026 11:11
Type predicate
// Exempel på en datatyp
type Account = {
id: string;
balance: number;
}
// "mystery is Account" kallas "type predicate"
// Returtypen är boolean, fast den används för att intyga att datatypen är "Account"
// "if this function returns true, treat the argument as an Account"
function isAccount(mystery: unknown): mystery is Account {
@lejonmanen
lejonmanen / backend.md
Last active September 3, 2026 13:57
Checklista för att sätta upp backend-server med Node.js

Skriv i terminalen:

# Skapa projektmapp och gå in i den
mkdir awesome-server/
cd awesome-server/

# Skapa mapp för kod och fil för serverkoden
mkdir src
echo "console.log('Hello from server')" > src/server.ts
@lejonmanen
lejonmanen / api.ts
Created August 14, 2026 11:21
TypeScript API states
type ApiState =
| { status: "idle" }
| { status: "loading" }
| { status: "success"; pokemonList: string[] }
| { status: "error"; error: string };
const [state, setState] = useState<ApiState>({ status: "idle" });
async function fetchPokemon() {
setState({ status: "loading" });
@lejonmanen
lejonmanen / environment.py
Last active June 16, 2026 16:29
Environment file for Python + Playwright + behave
from playwright.sync_api import sync_playwright
# Runs before any scenarios
def before_all(context):
# Start Playwright and the browser - close it in after_all
context.playwright = sync_playwright().start()
context.browser_type = context.playwright.chromium
context.browser = context.browser_type.launch(headless=True)
# Runs at the start of each scenario
@lejonmanen
lejonmanen / calculator.feature
Created April 7, 2026 19:29
Python BDD exempel, Gherkin och behave
# Gör en Feature-fil för varje större feature i appen.
# Varje feature testas med ett eller flera scenarion.
# Varje scenario beskrivs med flera steg, som definieras i en separat step-fil.
#
# Även icke-tekniska personer ska kunna läsa och förstå vad dessa testscenarier går ut på.
#
Feature: Enkel kalkylator
Scenario: Addera två tal
@lejonmanen
lejonmanen / LoginForm.jsx
Created April 1, 2026 16:22
React-formulär med validering
/*
Exempel på validering av formulär
Förbättringar:
+ Flytta valideringslogik till en separat hook för återanvändbarhet.
+ Lägg till fokus på första fel för bättre tillgänglighet: inputRef.current.focus()
+ Lägg till visuell feedback på input (t.ex. border-färg) för bättre UX. Återkoppla med mer än färg.
*/
import { useState } from "react";
@lejonmanen
lejonmanen / App.jsx
Created March 31, 2026 12:21
React Suspense exempel
// App.jsx
import { Suspense } from 'react'
import './App.css'
import Loading from './Loading'
import Consumer from './Consumer'
const App = () => (
<div>
<Suspense fallback={<Loading />}>
<Consumer />
@lejonmanen
lejonmanen / python-ci.yml
Last active March 27, 2026 15:04
Exempel på YAML för Python
name: Python CI/CD
# Talar om när jobben ska köras. Denna inställning bevakar när man gör push eller pull request mot branchen "main".
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
@lejonmanen
lejonmanen / txt
Created November 14, 2025 13:18
Gott och blandat för grupparbete JavaScript grund
SVG är ett bildformat, som man kan skriva med HTML-syntax. Eftersom den består av HTML-element kan man välja ut de ingående delarna med hjälp av JavaScript.
Exempel
Filen innehåller:
<path id="scaffold" ...>
Skriv i JS:
const part1 = document.querySelector('#scaffold')
part1.classList.add('css-klass som gör elementet osynligt')