Public
Likemy-portfolio
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v26View latest version
O index.tsx é um HTTP val em Deno com React Server-Side Rendering (SSR).
Tudo renderizado no servidor — sem JS no cliente.
| Camada | Tecnologia |
|---|---|
| Runtime | Deno (Val Town) |
| UI | React 18.2 (SSR via renderToString) |
| i18n | rosetta (EN + PT) |
| Styling | CSS inline (custom, sem framework) |
| Routing | Manual (pathname matching) |
| Markdown | Renderer próprio (regex-based) |
rosettapara traduções- Detecção automática via
?lang=param ouAccept-Languageheader - Toggle EN/PT na sidebar e em cada post
- Todos os textos, labels e bio traduzidos
profile = {
name: "Nuno Silva",
initials: "NS",
location: { en: "Alcofra, Portugal", pt: "Alcofra, Portugal" },
email: "nuno4slb@gmail.com",
github: "https://github.com/nmsilva",
valtown: "https://www.val.town/u/nmsilva",
}
- Dragonboat — Product Roadmap Platform (Node.js, React, TypeScript, PostgreSQL)
- fbref Football Data Pipeline — Cron + AI enrichment + REST API
- Crypto & Real Estate Trackers — Monitores de preços com alertas
4 posts completos em EN/PT com conteúdo técnico:
| Slug | Título | Tags |
|---|---|---|
orm-vs-raw-sql | Why I stopped using ORM | Node.js, PostgreSQL, Backend |
valtown-scratchpad | Val.town is the scratchpad I always wanted | Val.town, TypeScript |
react-server-components-one-year-in | React Server Components — one year in | React, Frontend, Performance |
football-stats-pipeline | Building a real-time football stats pipeline | AI, TypeScript, Data Engineering |
Posts com: title EN/PT, excerpt EN/PT, read time, tags, conteúdo completo em Markdown.
| Rota | Comportamento |
|---|---|
/ | Página principal (homepage) |
/posts/{slug} | Post individual |
?lang=en|pt | Override de idioma |
Sem formulário — links directos:
- ✉️ Email:
nuno4slb@gmail.com - 🐙 GitHub:
github.com/nmsilva - 🏔️ Val.town:
val.town/u/nmsilva
- Sidebar sticky em desktop (≥1024px)
- Mobile header com avatar, role, nav pills e bio
- Breakpoints:
max-width: 1024px,max-width: 640px
12 tecnologias com emoji icons: Node.js, React, TypeScript, PostgreSQL, MongoDB, Docker, AWS, Git, REST APIs, GraphQL, Redis, Jest
- Code blocks (
```) →<pre><code> ## headings→<h2>**bold**→<strong>[link](url)→<a>- Backtick inline code →
<code> - Parágrafos automáticos
| Ficheiro | Tipo | Descrição |
|---|---|---|
Layout.tsx | script | Layout component básico (classless.css) — não usado pelo index.tsx principal |
posts/001-first-post.md | - | Post exemplo (não usado pelo index.tsx) |
posts/002-second-post.md | - | Post exemplo (não usado pelo index.tsx) |
README.md | - | README do projecto (template original) |
https://nmsilva--019cdcc1687b73e8a526d410d2c5adc7.web.val.run
- Sem hit counter (foi removido vs. versão antiga)
- Markdown renderer básico (não usa
marked) - Posts hardcoded no
index.tsx(não lê ficheiros.mddo projecto) - Sem favicon
- Sem meta tags Open Graph
- Sem RSS feed