NISTA IT NISTA IT
Security expertise deserves a credible web presence.Sicherheitskompetenz braucht einen glaubwürdigen Webauftritt.
B2B website for an IT security and surveillance company. Custom editorial system built into the codebase — no CMS subscription, no vendor dependency, security-first architecture throughout. B2B-Website für ein IT-Sicherheitsunternehmen. Eigenes Redaktionssystem im Code — kein CMS-Abo, keine Vendor-Abhängigkeit, durchgehend sicherheitsorientierte Architektur.
// challenge // ausgangslage
An IT security company's website needs to earn credibility before it earns leads. The previous presence didn't match the team's expertise. They needed to publish industry articles regularly — but WordPress felt wrong, and a SaaS CMS felt like paying for something they shouldn't need. Die Website eines IT-Sicherheitsunternehmens muss Glaubwürdigkeit aufbauen, bevor sie Leads generiert. Der bisherige Auftritt entsprach nicht der Expertise. Regelmäßige Fachartikel — aber ohne WordPress oder teures SaaS.
// approach // vorgehen
The client's core business is security and reliability. Their website had to embody that — not just describe it. Custom admin panel built into the codebase: JWT auth, role-based access (editor/admin), SQLite-backed content, rate-limited endpoints. GDPR-compliant cookie banner with granular consent categories. Analytics with 180-day retention and automatic cleanup. Bot guard enabled by default. Production hardening: server refuses to start with weak credentials or missing CORS/Host configuration. No vendor, no subscription, no black box.
Kernkompetenz des Kunden: Sicherheit und Zuverlässigkeit. Die Website musste das verkörpern, nicht nur beschreiben. Eigenes Admin-Panel: JWT-Auth, rollenbasierter Zugriff, SQLite, Rate-Limiting. DSGVO-konformes Cookie-Banner, Analytics mit 180-Tage-Retention, Bot Guard. Der Server startet in Produktion nicht mit schwachen Zugangsdaten.
// code // code
Production startup gate — refuses to run with weak config Production-Startup-Gate — startet nicht mit schwacher Konfiguration
typescript// server/index.ts — enforced before the first request is handled
if (process.env.NODE_ENV === 'production') {
const required = ['JWT_SECRET', 'CORS_ORIGIN', 'ALLOWED_HOST'];
const missing = required.filter((k) => !process.env[k]);
if (missing.length > 0) {
console.error(`[startup] Missing required env: ${missing.join(', ')}`);
process.exit(1);
}
if ((process.env.JWT_SECRET?.length ?? 0) < 32) {
console.error('[startup] JWT_SECRET must be ≥ 32 characters in production');
process.exit(1);
}
} The server refuses to start with a weak config. No fallback, no defaults. For a security company this is not a feature — it is a minimum. Der Server startet nicht mit schwacher Konfiguration. Kein Fallback, keine Defaults. Für ein Sicherheitsunternehmen ist das kein Feature — es ist das Minimum.
JWT auth middleware with role-based access JWT-Auth-Middleware mit rollenbasiertem Zugriff
typescript// server/middleware/auth.ts
export function requireRole(role: 'editor' | 'admin') {
return (req: Request, res: Response, next: NextFunction) => {
const token = req.headers.authorization?.split(' ')[1];
if (!token) return res.status(401).json({ error: 'Unauthorized' });
try {
const payload = jwt.verify(token, process.env.JWT_SECRET!) as JwtPayload;
if (role === 'admin' && payload.role !== 'admin') {
return res.status(403).json({ error: 'Forbidden' });
}
req.user = payload;
next();
} catch {
res.status(401).json({ error: 'Invalid token' });
}
};
} Admin routes require admin. Editor routes accept both. The distinction is enforced at the middleware layer — never at the handler. Admin-Routen erfordern Admin. Editor-Routen akzeptieren beide. Die Unterscheidung wird auf Middleware-Ebene durchgesetzt — nie im Handler.
// outcome // ergebnis
Production-hardened B2B site: built-in editorial CMS with JWT auth, GDPR-compliant analytics, ETag caching for blog endpoints, bot guard, rate limiting, and zero third-party CMS dependency. Produktionsgehärtete B2B-Website: integriertes CMS mit JWT-Auth, DSGVO-Analytics, ETag-Caching, Bot Guard, Rate-Limiting — ohne externe CMS-Abhängigkeit.
// brand // marke
Audience
Zielgruppe
B2B procurement teams and IT managers in the DACH region. Skeptical of marketing claims. Value proof over promises. Evaluate vendors on technical credibility before price.
B2B-Einkaufsteams und IT-Manager in der DACH-Region. Skeptisch gegenüber Marketing. Bewerten nach Belegen, nicht Versprechen. Technische Glaubwürdigkeit vor Preis.
Positioning
Positionierung
Security expertise should look secure. The site's architecture — no third-party CMS, no tracking pixels, no black boxes — is itself a credibility signal to a technically literate audience.
Sicherheitskompetenz sollte sicher aussehen. Die Architektur der Website — kein Fremd-CMS, keine Tracking-Pixel, keine Black Boxes — ist selbst ein Glaubwürdigkeitssignal.
Tone of Voice
Tonalität
Technical, precise, and proof-first. No marketing fluff. Claims are backed by specifics. Speaks to the technical evaluator, not the executive summary reader.
Technisch, präzise, belege-zuerst. Kein Marketing-Blabla. Aussagen werden durch Spezifika gestützt. Spricht den technischen Evaluator an, nicht den Executive-Summary-Leser.
Visual Direction
Visual Direction
Dark and structured. Monospace type signals technical credibility. Conservative palette (dark tones, accent blue) that communicates reliability and precision, not approachability.
Dunkel und strukturiert. Monospace-Type signalisiert technische Glaubwürdigkeit. Konservative Palette (Dunkeltöne, Akzentblau) für Zuverlässigkeit und Präzision.
// stack
- React
- TypeScript
- Vite
- Node.js
- Express
- SQLite