Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions .github/workflows/cd_deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,14 @@ jobs:
WORKER_D1: ${{ secrets.WORKER_D1 }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}

- name: Deploy — Worker
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.PAT }}
publish_dir: ./server
publish_branch: 'server'
allow_empty_commit: false
enable_jekyll: true
# - name: Deploy — Worker
# uses: peaceiris/actions-gh-pages@v4
# with:
# github_token: ${{ secrets.PAT }}
# publish_dir: ./server
# publish_branch: 'server'
# allow_empty_commit: false
# enable_jekyll: true

- name: Deploy — Website
uses: peaceiris/actions-gh-pages@v4
Expand Down
86 changes: 86 additions & 0 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Desenvolvimento do site

Este repositório contém o **código-fonte** do site oficial da **JSConf Brasil** ([jsconf.com.br](https://jsconf.com.br)): páginas em **Docusaurus**, conteúdo multilíngue e um **Worker** (Cloudflare) para formulários e API. Aqui você encontra como rodar o projeto localmente, traduzir textos e validar o build antes de abrir um PR.

---

## Primeiros passos

```sh
npm ci
npm start # Inicia o website e o servidor localmente (pt-BR)
```

---

### Idiomas

```sh
npm run start:en # Inglês
npm run start:es # Espanhol
```

> [!TIP]
>
> Use o componente `<Image />` ao invés de `<img />` para visualizar as imagens corretamente em todos os idiomas durante o desenvolvimento.
>
> - O componente `<Image />` utiliza `loading="lazy"` e `decoding="async"` por padrão.

---

### Traduções (i18n)

Use `<Text />` para conteúdo JSX e `text()` para atributos HTML (`aria-label`, `alt`, `placeholder`, etc.):

```tsx
<h1>
<Text id='speakers.title' />
</h1>
```

```tsx
<Image alt={text({ id: 'location.venue.imgAlt' })} />
```

`<Text />` e `text()` são abstrações do [`<Translate />`](https://docusaurus.io/docs/docusaurus-core#translate) do **Docusaurus**:

- IDs tipados com autocomplete a partir de `i18n/pt-BR/code.json`
- Fallback automático do idioma principal (`pt-BR`) — não é necessário passar `children`

Para adicionar um novo texto:

1. Crie a chave em `i18n/pt-BR/code.json`
2. Use `<Text id='...' />` ou `text({ id: '...' })` no componente
3. Os tipos são inferidos automaticamente usando `i18n/pt-BR/code.json` como fonte de verdade

---

### Formatação / Linting

```sh
npm run lint:fix
```

---

## Compilação

```sh
npm run build # Compila o website e o worker
```

---

## Testes

```sh
npm test # Testes unitários
```

```sh
npm run typecheck # Verificação de tipos TypeScript
```

```sh
npm run lint # Verificação de linting
```
81 changes: 10 additions & 71 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,82 +1,21 @@
# JSConf Brasil 2026 🐢✨
# JSConf Brasil 2026

## Desenvolvimento
A **JSConf Brasil** é a conferência brasileira dentro da família **JSConf**, dedicada à comunidade **JavaScript** e ao ecossistema em torno da linguagem — do front ao back, ferramentas, performance e as pessoas que constroem produtos com tecnologia web.

```sh
npm ci
npm start # Inicia o website e o servidor localmente (pt-BR)
```
## Propósito

---

### Idiomas

```sh
npm run start:en # Inglês
npm run start:es # Espanhol
```

> [!TIP]
>
> Use o componente `<Image />` ao invés de `<img />` para visualizar as imagens corretamente em todos os idiomas durante o desenvolvimento.
>
> - O componente `<Image />` utiliza `loading="lazy"` e `decoding="async"` por padrão.

---

### Traduções (i18n)

Use `<Text />` para conteúdo JSX e `text()` para atributos HTML ( `aria-label` , `alt` , `placeholder` , etc.):

```tsx
<h1>
<Text id='speakers.title' />
</h1>
```

```tsx
<Image alt={text({ id: 'location.venue.imgAlt' })} />
```
O evento existe para **reunir quem desenvolve com JS**, **dividir conhecimento de alto nível** e **fortalecer redes** entre profissionais, estudantes e comunidades de todo o país. Queremos um espaço acolhedor, com palestras que inspiram e práticas que refletem o estado da arte, sempre com olhar para o contexto brasileiro.

`<Text />` e `text()` são abstrações do [ `<Translate />` ](https://docusaurus.io/docs/docusaurus-core#translate) do **Docusaurus**:
## JSConf BR e a NodeBR

- IDs tipados com autocomplete a partir de `i18n/pt-BR/code.json`
- Fallback automático do idioma principal (`pt-BR`) — não é necessário passar `children`
A **JSConf Brasil** é um **braço da [NodeBR](https://nodebr.org)** — a associação que apoia e articula a comunidade **Node.js** e JavaScript no Brasil. Essa ligação traduz o compromisso com **código aberto**, **educação** e **representação** da comunidade técnica nacional em eventos de referência internacional, alinhados aos valores que a NodeBR defende no país.

Para adicionar um novo texto:
## Site e repositório

1. Crie a chave em `i18n/pt-BR/code.json`
2. Use `<Text id='...' />` ou `text({ id: '...' })` no componente
3. Os tipos são inferidos automaticamente usando `i18n/pt-BR/code.json` como fonte de verdade
O site público está em **[jsconf.com.br](https://jsconf.com.br)**. Este repositório é o código do site e dos serviços que o sustentam (por exemplo, formulários e integrações).

---

### Formatação / Linting

```sh
npm run lint:fix
```

---

## Compilação

```sh
npm run build # Compila o website
```
Quer contribuir com código, traduções ou correções? Veja **[DEVELOPMENT.md](./DEVELOPMENT.md)**.

---

## Testes

```sh
npm test # Testes unitários
```

```sh
npm run typecheck # Verificação de tipos TypeScript
```

```sh
npm run lint # Verificação de linting
```
Licença: **AGPL-3.0-only** — ver [LICENSE](./LICENSE).
6 changes: 0 additions & 6 deletions i18n/en-US/code.json
Original file line number Diff line number Diff line change
Expand Up @@ -167,12 +167,6 @@
"team.ana.position": {
"message": "Senior Software Engineer"
},
"team.weslley.bio": {
"message": "Weslley Araújo is a developer with over 11 years of experience, MySQL2 maintainer and creator of Poku, a high-performance test runner that challenges the programming language itself."
},
"team.weslley.position": {
"message": "Principal Developer"
},
"team.lojhan.bio": {
"message": "Tech Lead & Full Stack Developer. Helping teams build scalable applications with modern technologies. Specialized in frontend, backend and architecture design."
},
Expand Down
6 changes: 0 additions & 6 deletions i18n/es-419/code.json
Original file line number Diff line number Diff line change
Expand Up @@ -167,12 +167,6 @@
"team.ana.position": {
"message": "Senior Software Engineer"
},
"team.weslley.bio": {
"message": "Weslley Araújo es un desarrollador con más de 11 años de experiencia, mantenedor de MySQL2 y creador de Poku, un test runner de alto rendimiento que desafía al propio lenguaje de programación."
},
"team.weslley.position": {
"message": "Principal Developer"
},
"team.lojhan.bio": {
"message": "Tech Lead & Full Stack Developer. Ayudando a equipos a construir aplicaciones escalables con tecnologías modernas. Especializado en frontend, backend y diseño de arquitectura."
},
Expand Down
6 changes: 0 additions & 6 deletions i18n/pt-BR/code.json
Original file line number Diff line number Diff line change
Expand Up @@ -167,12 +167,6 @@
"team.ana.position": {
"message": "Senior Software Engineer"
},
"team.weslley.bio": {
"message": "Weslley Araújo é um desenvolvedor com mais de 11 anos de experiência, mantenedor do MySQL2 e criador do Poku, um test runner de alta performance que desafia a própria linguagem de programação."
},
"team.weslley.position": {
"message": "Principal Developer"
},
"team.lojhan.bio": {
"message": "Tech Lead & Full Stack Developer. Ajudando equipes a construir aplicações escaláveis com tecnologias modernas. Especializado em frontend, backend e design de arquitetura."
},
Expand Down
Loading