惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Security Blog
Microsoft Security Blog
Jina AI
Jina AI
量子位
博客园 - 叶小钗
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
S
SegmentFault 最新的问题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网
博客园 - 聂微东
美团技术团队
Last Week in AI
Last Week in AI
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园_首页
V
Visual Studio Blog
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Building Ekehi: My Week in Reviews and a New Submissions ...
AJ · 2026-06-28 · via DEV Community

AJ

Week ending 27 June 2026 · Ekehi frontend (React + TanStack Router)

This week split into two halves: reviewing four teammates' pull requests so the resources section of the app could land cleanly, and shipping my own issue, the Submissions page. Here is what went into both.

Reviewing four PRs

Most of the team was finishing the detail-page work for the resources section, so a big part of my week was reading other people's code and helping it get to merge.

  • #163 — Build template detail page (MarionBraide). Merged.
  • #162 — Build guide detail page (Fhave). Merged.
  • #161 — Add training detail page (first-afk). Merged.
  • #156 — New Contributors page with responsive layout (first-afk). Merged.

Reviewing this many pages back to back was useful in a way I did not expect. The three detail pages (guide, training, template) all solve the same shape of problem: fetch one record by id, then render loading, error, and empty states around it. Seeing three takes on the same pattern made the house conventions obvious, the feature/*.types.ts plus *.service.ts plus *.query.ts split, the makeRequest wrapper, and the ApiError handling. I leaned on exactly those patterns a day later when I built my own page, which is the whole point of reviewing widely before you write.

What I focused on in reviews: consistent loading and error states, no stray fetch or localStorage calls (we route everything through the shared API layer), and accessible markup. The contributors page (#156) was the odd one out, more layout and responsiveness than data, so there the attention went to how it held up across breakpoints.

Shipping issue #148: the Submissions page

My own issue this week was #148 — Build the Submissions page, which closed today.

What I built:

  • A three-section form (About the opportunity, Programme details, About the organizer) that mirrors the legacy submission flow.
  • A data layer that fits the existing conventions: zod types, a service built on makeRequest, a useMetaQuery for the dropdown and checkbox options (gated on the access token), and a useCreateOpportunityMutation that posts to /opportunities. The submission is stored as pending for the team to review.
  • Loading, error, and success states, plus client-side validation that matches the old form's rules. Empty optional fields are dropped from the payload so the server's email and URL checks never receive blank strings.
  • Six tests covering loading, the meta error, the rendered form, required-field validation, the submitted payload, and the server-error path.

I also styled the form to match the Figma: a single rounded card with dividers between sections and softened fields, instead of three separate boxes.

A bug I caught along the way

While testing the page I noticed the navbar was invisible on every page except the home page. It was hard-wired for the dark hero on the landing page: white text, white logo, and an absolute overlay. On a white background it simply vanished.

I made the navbar theme-aware. On the home page it keeps the transparent, white treatment over the hero. On every other page it now renders as a solid bar with a dark logo, dark links, a purple active state, and a filled Sign-up button, and it takes up real layout space so it no longer floats over the content. That meant updating the navbar's existing tests to account for the new route-aware logic.

Also fixed: issue #157

Earlier in the week I closed #157 — Contributors page card-background SVGs fail to render on the production build. The cards looked fine in development but lost their background SVGs once built and deployed, the classic case of an asset that resolves under the dev server but not after the production bundle. I tracked down how those SVGs were referenced and fixed it so they render in the built output, not just locally. A reminder that "works in dev" is not the same as "works in the build," and that the production bundle is the only source of truth that matters.

Issues completed this week

  • #157 — fix: contributors page card-background SVGs fail to render on the production build.
  • #148 — task: build the Submissions page.