Skip to content
Merged
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
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Default owners for everything in the repo.
# These maintainers are requested for review on every pull request.
* @eluciano11 @rnegron
35 changes: 35 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Bug report
description: Report something that is broken on the site.
labels: [bug]
body:
- type: textarea
id: what-happened
attributes:
label: What happened?
description: A clear description of the bug, and what you expected instead.
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
placeholder: |
1. Go to '...'
2. Click on '...'
3. See error
validations:
required: true
- type: input
id: environment
attributes:
label: Browser / device
placeholder: e.g. Chrome 138 on macOS, Safari on iPhone
validations:
required: false
- type: textarea
id: screenshots
attributes:
label: Screenshots
description: Drag and drop any screenshots here (optional).
validations:
required: false
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Discord community
url: https://discord.gg/aeKTqu6A
about: Questions, ideas, and general chat happen on our Discord — say hi!
- name: Website
url: https://fullstacknights.com
about: Learn more about Fullstack Nights and upcoming events.
24 changes: 24 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Feature request
description: Suggest an improvement or new idea for the site.
labels: [enhancement]
body:
- type: textarea
id: problem
attributes:
label: What problem does this solve?
description: Describe the motivation. What's missing or frustrating today?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
description: What would you like to see happen?
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
validations:
required: false
22 changes: 22 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
version: 2
updates:
- package-ecosystem: npm
directory: "/"
schedule:
interval: weekly
open-pull-requests-limit: 10
groups:
gatsby:
patterns:
- "gatsby"
- "gatsby-*"
dev-dependencies:
dependency-type: development
commit-message:
prefix: chore
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: weekly
commit-message:
prefix: ci
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ jobs:
run: npm ci
- name: Lint
run: npm run lint
- name: Format check
run: npx prettier --check "**/*.{js,jsx,json,md}"
- name: Build
run: npm run build
- name: Percy Snapshot
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/greetings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ jobs:
- uses: actions/first-interaction@v3
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
issue_message: "Gracias por tu interes en Fullstack Nights y por hacer este GitHub Issue! Pronto estaremos en contacto."
pr_message: "Gracias por tu interes en Fullstack Nights y por hacer este Pull Request! Pronto estaremos en contacto."
issue_message: "¡Gracias por tu interés en Fullstack Nights y por abrir este Issue! Pronto estaremos en contacto. / Thanks for your interest in Fullstack Nights and for opening this issue! We'll be in touch soon."
pr_message: "¡Gracias por tu interés en Fullstack Nights y por hacer este Pull Request! Pronto estaremos en contacto. / Thanks for your interest in Fullstack Nights and for opening this pull request! We'll be in touch soon."
4 changes: 3 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ i18next is initialized in `gatsby-browser.js`. Languages are detected via `i18ne
This project uses **Gatsby's built-in [Head API](https://www.gatsbyjs.com/docs/reference/built-in-components/gatsby-head/)** — `react-helmet` was removed. Each page in `src/pages/` exports a top-level `Head` component **at module scope**, not inside the page's JSX:

```js
export default function MyPage() { /* ... */ }
export default function MyPage() {
/* ... */
}
export const Head = () => <SEO title="My Page" />;
```

Expand Down
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Short version

Our conference is dedicated to offering a welcoming experience for everyone, regardless of their gender, sexual orientation, ability, appearance, ethnicity or religion. We do not tolerate abuses towards the participants of the conference in any form. Sexual language and/or sexualized images are not appropriate for any aspect of the conference, including talks, workshops, gatherings, Twitter or any other online medium associated to the event. Conference participants who violate these rules could be sanctioned or expelled from the conference without any reimbursement, at the discretion of the conference organizers.
Our conference is dedicated to offering a welcoming experience for everyone, regardless of their gender, sexual orientation, ability, appearance, ethnicity or religion. We do not tolerate abuses towards the participants of the conference in any form. Sexual language and/or sexualized images are not appropriate for any aspect of the conference, including talks, workshops, gatherings, Discord, X or any other online medium associated to the event. Conference participants who violate these rules could be sanctioned or expelled from the conference without any reimbursement, at the discretion of the conference organizers.

## Long version

Expand Down
46 changes: 46 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,63 @@
**Charlas sobre tecnología y diseño en un ambiente informal.**

[![CI](https://github.com/fullstacknights/website/actions/workflows/ci.yml/badge.svg)](https://github.com/fullstacknights/website/actions/workflows/ci.yml)
[![Discord](https://img.shields.io/discord/1521687604586614926?label=Discord&logo=discord&logoColor=white&color=5865F2)](https://discord.gg/aeKTqu6A)
[![License: MIT](https://img.shields.io/github/license/fullstacknights/website?color=blue)](LICENSE)
[![Node](https://img.shields.io/badge/node-%E2%89%A522-339933?logo=node.js&logoColor=white)](.nvmrc)
[![Gatsby](https://img.shields.io/badge/Gatsby-5-663399?logo=gatsby&logoColor=white)](https://www.gatsbyjs.com/)
[![Code style: Prettier](https://img.shields.io/badge/code_style-prettier-F7B93E?logo=prettier&logoColor=black)](https://prettier.io/)

</div>

The marketing site for [Fullstack Nights](https://fullstacknights.com) — a Puerto Rico
tech and design community. Built with Gatsby 5, React 18, and Tailwind 3.

## Quick start

```sh
nvm use # picks up Node version from .nvmrc
npm install
npm run develop # http://localhost:8000
```

## Scripts

| Command | What it does |
| ----------------- | ------------------------------------------------ |
| `npm run develop` | Start the Gatsby dev server (alias: `npm start`) |
| `npm run build` | Production build into `public/` |
| `npm run serve` | Serve the production build |
| `npm run lint` | `oxlint` over `src/` |
| `npm run format` | Prettier over `**/*.{js,jsx,json,md}` |
| `npm run clean` | `gatsby clean` (clears the Gatsby cache) |

## Project layout

```
src/
components/ Shared React components (barrel export via index.js)
pages/ Filesystem routes (about.js → /about/)
locales/ i18n strings — en.json / es.json, kept in sync
config.js CONFIG.activeEvent toggles event-related UI
static/ Copied to site root verbatim (photos, assets)
netlify/ Serverless functions (form submissions)
```

## Deployment

The site deploys to [Netlify](https://www.netlify.com/) on every push to `main`
(see `netlify.toml`). CI (`.github/workflows/ci.yml`) runs lint, format check,
build, and a Percy visual snapshot on each pull request.

## Community

- Join us on [Discord](https://discord.gg/aeKTqu6A)
- Read the [Code of Conduct](CODE_OF_CONDUCT.md) ([español](https://fullstacknights.com/code-of-conduct/))

## Contributing

Contributions are welcome — see [CONTRIBUTING.md](CONTRIBUTING.md) to get started.

## License

[MIT](LICENSE)
19 changes: 19 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Security Policy

## Reporting a vulnerability

This is a static marketing site, but we still take security seriously. If you
find a vulnerability, please **do not open a public issue**.

Instead, report it privately through
[GitHub's private vulnerability reporting](https://github.com/fullstacknights/website/security/advisories/new),
or reach out to an organizer on our [Discord](https://discord.gg/aeKTqu6A).

We'll acknowledge your report as soon as we can and keep you updated on the fix.

## Scope

- The website and its build tooling in this repository.
- The Netlify serverless functions under `netlify/`.

Thanks for helping keep the community safe.
5 changes: 4 additions & 1 deletion netlify/functions/submission-created.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,10 @@ exports.handler = async (event) => {
console.error(
`submission-created: Discord returned ${response.status} for form "${formName}"`
);
return { statusCode: 502, body: `Discord webhook failed: ${response.status}` };
return {
statusCode: 502,
body: `Discord webhook failed: ${response.status}`
};
}
} catch (error) {
console.error(
Expand Down
5 changes: 4 additions & 1 deletion src/components/submission-form.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ function SubmissionForm() {
event.preventDefault();
setStatus("submitting");

fetch("/", { method: "POST", body: new URLSearchParams(new FormData(event.target)) })
fetch("/", {
method: "POST",
body: new URLSearchParams(new FormData(event.target))
})
.then((response) => {
if (!response.ok) throw new Error(response.statusText);
setStatus("success");
Expand Down
2 changes: 1 addition & 1 deletion src/constants.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import CONFIG from "./config";

export const DISCORD_LINK = "https://discord.gg/5MTV7Kmwn5";
export const DISCORD_LINK = "https://discord.gg/aeKTqu6A";

export const ORGANIZERS = [
{
Expand Down
Loading