You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: updates, recognition, performance and cleanup
Schema:
- Added show_in_recognition column to blog_posts
- Added placement column to blog_posts
- Generated and pushed migrations to Neon
Features:
- Recognition section on home page (curated, admin-controlled)
- show_in_recognition toggle in admin blog form
- placement field in admin blog form (shown when recognition is on)
- Blog post editorial layout with full width cover image
- Reading time calculation from TipTap JSON content
- Latest Releases section pulling all categories
Performance:
- Cloudinary transformation helpers (getBlogCoverUrl etc)
- getOptimisedUrl() with context-specific transforms
- g_face crop on team photos
- Remaining ISR revalidate=3600 on public pages
- Full OG and Twitter metadata on all pages
- robots.ts and sitemap.ts
Cleanup:
- HackathonStrip component removed
- Inline SVG icons via shared icons.tsx
- No emoji usage in UI components
- Image upload folder routing (?folder= param)
- All content images using Cloudinary helpers
**show_in_recognition:** `boolean, notNull, default(false)` — controls whether post appears in the Recognition section on the home page. Admin toggles this manually per post.
[Cover image — full width, 1200x630px, priority prop for LCP]
394
450
CATEGORY BADGE
395
451
Title (JetBrains Mono, H1)
396
-
By [author] · [date] · [X min read]
397
-
─────────────────────────────────
398
-
[TipTap rendered content — IBM Plex Sans body]
452
+
By [author] · [formatted date] · [X min read]
453
+
─────────────────────────────────────────────
454
+
[TipTap rendered content — IBM Plex Sans body, max-w-3xl]
399
455
```
400
-
- Reading time calculated from word count
401
-
- Cover image rendered at full width
402
-
- Content rendered via PostContent.tsx (TipTap read-only)
456
+
- Cover image: full width, no max-w constraint
457
+
- Article content: max-w-3xl centered for readable line length
458
+
- Reading time calculated from TipTap JSON word count
459
+
- Content rendered via PostContent.tsx (TipTap read-only, 'use client')
403
460
404
461
### Team (/team)
405
462
- Fetches team_members where is_active = true, ordered by order_index
406
-
- Each card: photo (800x800px from Cloudinary), name, role, bio, social links
463
+
- Each card: photo (Cloudinary, g_face crop), name, role, bio, social links
407
464
- Founders:
408
465
- **Kareem Aliameen — Founder & CEO**
409
466
Kareem is the Founder and CEO of CodedDevs Technology LTD, leading the company's strategy, product vision and development, and technical direction. A full-stack engineer working primarily in JavaScript and TypeScript, he is highly skilled at leveraging AI for development, research, and productivity. He brings a background spanning graphic design, digital commerce, and entrepreneurship, and is currently studying at Miva University.
@@ -415,10 +472,12 @@ By [author] · [date] · [X min read]
415
472
### Careers (/careers)
416
473
- Lists open roles
417
474
- Empty state: "No open roles right now. Send us a message." → /contact
418
-
- Application form: inline below role card
475
+
- Application form: inline below role card, 'use client'
419
476
420
477
### Contact (/contact)
421
-
- Two columns: contact info left, form right
478
+
- Two columns desktop, stacked mobile
479
+
- Left: company info, email, social links
480
+
- Right: contact form
422
481
- Subjects: General Inquiry | Partnership | Press | Investment | Other
423
482
- Email: codeddevs.team@gmail.com
424
483
- Socials: GitHub, X, TikTok, YouTube, Instagram
@@ -433,34 +492,33 @@ By [author] · [date] · [X min read]
0 commit comments