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
14 changes: 14 additions & 0 deletions .cursor/rules/lint-before-done.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
description: Run lint/format CI before finishing code changes in this repo
alwaysApply: true
---

# Lint before done

When you change code in this repository, **before reporting the task complete**:

1. Run `npm run lf:ci` from `feelyourprotocol/website/`.
2. If it fails, fix issues (or run `npm run lf` to auto-fix where possible) and re-run until it passes.
3. Do not skip this for "small" edits — including `community-token/`, `src/`, and config files.

`lf:ci` = ESLint (whole repo) + Prettier check (`src/`, `cypress/e2e/`, `community-token/`).
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
- [ ] Linting and type checking pass (`npm run lf && npm run type-check`)
- [ ] Unit tests pass (`npx vitest run`)
- [ ] E2E tests pass (`npm run test:e2e`)
- [ ] Production build succeeds (`npm run build`)
- [ ] Production build succeeds (`npm run build` — website + community-token + docs)
- [ ] New exploration is registered in `REGISTRY.ts`
- [ ] Library needs were discussed in a separate issue (if applicable — see [Third-Party Libraries](https://docs.feelyourprotocol.org/contributing/third-party-libraries))

Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ npm install
npm run dev
```

## Deployment

Production builds (`dist/website`, `dist/docs`, `dist/community-token`) are **not** in the repo — the server runs `npm run build:deploy` after `git pull`. See `server-config/deployment/fyp_deploy.sh`.

## Documentation

Full documentation is available at **[docs.feelyourprotocol.org](https://docs.feelyourprotocol.org)**.
Expand Down
10 changes: 5 additions & 5 deletions community-token/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,19 @@ npm run community-token:preview

Production output: `dist/community-token/`

Full deploy build (main site + community token + docs):
Full deploy build (main site + community token + docs, rebuilt on server — `dist/` is not in git):

```bash
npm run build:deploy
```

## Content (fill in later)

| File | Purpose |
| --- | --- |
| `src/content/fund.ts` | Developer Fund (fee uses + short notes) |
| File | Purpose |
| ----------------------- | ----------------------------------------------------------------------- |
| `src/content/fund.ts` | Developer Fund (fee uses + short notes) |
| `src/content/topics.ts` | Intro prose, `HOW_IT_WORKS` box meta, tabbed content (`GUIDELINE_TABS`) |
| `src/content/token.ts` | Which-token reference (name, symbol, links) |
| `src/content/token.ts` | Which-token reference (name, symbol, links) |

Layout: two columns on large screens — left: intro + token; right: **How fees are used** box (top) + tabbed **How this works** (bottom). Tabs: `Scope`, `Token Relationship`, `Terms`, `Community`.

Expand Down
2 changes: 1 addition & 1 deletion community-token/index.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
Expand Down
8 changes: 6 additions & 2 deletions community-token/src/components/FundCommitment.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ import { FUND_COMMITMENT } from '@ct/content/fund'
id="fund"
class="ct-section-anchor ct-card overflow-hidden border-purple-200/80 ring-1 ring-purple-100"
>
<header class="border-b border-purple-100 bg-gradient-to-r from-purple-50/80 to-cyan-50/40 px-4 py-3 md:px-5">
<header
class="border-b border-purple-100 bg-gradient-to-r from-purple-50/80 to-cyan-50/40 px-4 py-3 md:px-5"
>
<p class="font-mono text-[0.65rem] uppercase tracking-[0.2em] text-purple-600/90">
{{ FUND_COMMITMENT.subtitle }}
</p>
Expand All @@ -32,7 +34,9 @@ import { FUND_COMMITMENT } from '@ct/content/fund'
</li>
</ul>

<ul class="mt-4 space-y-1.5 border-t border-slate-100 pt-3 text-sm leading-relaxed text-slate-500">
<ul
class="mt-4 space-y-1.5 border-t border-slate-100 pt-3 text-sm leading-relaxed text-slate-500"
>
<li v-for="(note, index) in FUND_COMMITMENT.notes" :key="index">{{ note }}</li>
<li>
On-chain balances, claims, withdrawals, and the work log live in the
Expand Down
16 changes: 8 additions & 8 deletions community-token/src/components/GuidelinesTabs.vue
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,10 @@ watch(
</script>

<template>
<section id="how-it-works" class="ct-section-anchor ct-card flex min-h-64 flex-col overflow-hidden">
<section
id="how-it-works"
class="ct-section-anchor ct-card flex min-h-64 flex-col overflow-hidden"
>
<div class="border-b border-slate-100 px-4 py-3 md:px-5">
<div class="group flex items-baseline gap-2">
<h2 class="font-mono text-sm font-bold uppercase tracking-[0.15em] text-slate-600">
Expand All @@ -62,13 +65,10 @@ watch(
class="flex min-h-0 flex-1 flex-col"
@change="onSelectTab"
>
<TabList class="flex flex-wrap gap-1 border-b border-slate-100 bg-slate-50/80 px-3 py-2 md:px-4">
<Tab
v-for="tab in tabs"
:key="tab.id"
v-slot="{ selected }"
as="template"
>
<TabList
class="flex flex-wrap gap-1 border-b border-slate-100 bg-slate-50/80 px-3 py-2 md:px-4"
>
<Tab v-for="tab in tabs" :key="tab.id" v-slot="{ selected }" as="template">
<button
type="button"
:class="[
Expand Down
4 changes: 1 addition & 3 deletions community-token/src/components/SiteFooter.vue
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@ const LAST_UPDATED = 'June 5, 2026'
<span class="text-slate-300">·</span>
<a :href="DOCS_URL" target="_blank" rel="noopener" class="hover:text-slate-700">Docs</a>
<span class="text-slate-300">·</span>
<a :href="GITHUB_URL" target="_blank" rel="noopener" class="hover:text-slate-700"
>GitHub</a
>
<a :href="GITHUB_URL" target="_blank" rel="noopener" class="hover:text-slate-700">GitHub</a>
</p>
</div>
<p class="mt-3 text-[0.65rem] leading-relaxed text-slate-400">
Expand Down
4 changes: 1 addition & 3 deletions community-token/src/components/TokenInfoCard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@ import { TOKEN_INFO_FIELDS } from '@ct/content/token'
</h2>
<SectionAnchorLink id="token-info" />
</div>
<span
class="rounded-full bg-slate-100 px-2 py-0.5 font-mono text-[0.65rem] text-slate-500"
>
<span class="rounded-full bg-slate-100 px-2 py-0.5 font-mono text-[0.65rem] text-slate-500">
reference
</span>
</div>
Expand Down
25 changes: 14 additions & 11 deletions community-token/src/components/TreasuryPieChart.vue
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@ const activeSlices = computed(() => props.spec.slices.filter((slice) => slice.eu

const basisEur = computed(() => props.spec.basis.totalEur)

const earmarkedEur = computed(() =>
activeSlices.value.reduce((sum, slice) => sum + slice.eur, 0),
)
const earmarkedEur = computed(() => activeSlices.value.reduce((sum, slice) => sum + slice.eur, 0))

type Segment = {
id: string
Expand Down Expand Up @@ -71,20 +69,19 @@ const generatedLabel = computed(() => {
<template>
<figure class="ct-treasury-chart">
<figcaption :class="compact ? 'mb-2' : 'mb-3'">
<h4 :class="compact ? 'text-xs font-bold text-slate-700' : 'text-sm font-bold text-slate-800'">
<h4
:class="compact ? 'text-xs font-bold text-slate-700' : 'text-sm font-bold text-slate-800'"
>
{{ spec.title }}
</h4>
<p
v-if="!compact"
class="mt-0.5 text-xs text-slate-500"
>
<p v-if="!compact" class="mt-0.5 text-xs text-slate-500">
{{ spec.subtitle }}
</p>
<p class="font-mono text-[0.6rem] text-slate-400" :class="compact ? 'mt-0.5' : 'mt-1'">
<template v-if="compact">As of {{ generatedLabel }}</template>
<template v-else>
Basis: {{ spec.basis.description }} ({{ spec.basis.totalEur.toLocaleString('en-GB') }} €) ·
Generated {{ generatedLabel }}
Basis: {{ spec.basis.description }} ({{ spec.basis.totalEur.toLocaleString('en-GB') }} €)
· Generated {{ generatedLabel }}
</template>
</p>
</figcaption>
Expand Down Expand Up @@ -123,7 +120,13 @@ const generatedLabel = computed(() => {
</text>
</svg>

<ul :class="compact ? 'min-w-0 flex-1 space-y-1 text-[0.65rem]' : 'min-w-0 flex-1 space-y-2 text-xs text-slate-600'">
<ul
:class="
compact
? 'min-w-0 flex-1 space-y-1 text-[0.65rem]'
: 'min-w-0 flex-1 space-y-2 text-xs text-slate-600'
"
>
<li v-for="segment in segments" :key="segment.id" class="flex items-start gap-1.5">
<span
class="mt-0.5 size-2 shrink-0 rounded-sm"
Expand Down
7 changes: 4 additions & 3 deletions community-token/src/components/TreasurySection.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ import {
TREASURY_WALLET_URL,
} from '@ct/content/treasury'

const inTreasuryEur =
TREASURY_SNAPSHOT_2026.claimedEur - TREASURY_SNAPSHOT_2026.withdrawnEur
const inTreasuryEur = TREASURY_SNAPSHOT_2026.claimedEur - TREASURY_SNAPSHOT_2026.withdrawnEur
</script>

<template>
Expand Down Expand Up @@ -57,7 +56,9 @@ const inTreasuryEur =
</dd>
</div>
<div class="rounded-md border border-purple-100 bg-purple-50/50 px-2 py-1.5">
<dt class="font-mono text-[0.6rem] uppercase tracking-wider text-purple-500">In treasury</dt>
<dt class="font-mono text-[0.6rem] uppercase tracking-wider text-purple-500">
In treasury
</dt>
<dd class="font-mono text-xs font-bold text-purple-800">
{{ inTreasuryEur.toLocaleString('en-GB') }} €
</dd>
Expand Down
3 changes: 1 addition & 2 deletions community-token/src/content/token.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ export const TOKEN_INFO = {
network: 'Base',
contractAddress: '0x8eae800ff67778057941792acdbab29904962ba3',
bankrUrl: 'https://bankr.bot/discover/0x8eae800ff67778057941792acdbab29904962ba3',
explorerUrl:
'https://basescan.org/token/0x8eae800ff67778057941792acdbab29904962ba3',
explorerUrl: 'https://basescan.org/token/0x8eae800ff67778057941792acdbab29904962ba3',
} as const

const shortAddress = (address: string) => `${address.slice(0, 6)}…${address.slice(-4)}`
Expand Down
22 changes: 0 additions & 22 deletions dist/docs/404.html

This file was deleted.

4 changes: 0 additions & 4 deletions dist/docs/assets/chunks/framework.DyoGesZS.js

This file was deleted.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed dist/docs/assets/inter-italic-greek.DJ8dCoTZ.woff2
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed dist/docs/assets/inter-roman-cyrillic.C5lxZ8CY.woff2
Binary file not shown.
Binary file not shown.
Binary file removed dist/docs/assets/inter-roman-greek.BBVDIX6e.woff2
Binary file not shown.
Binary file not shown.
Binary file removed dist/docs/assets/inter-roman-latin.Di8DUHzh.woff2
Binary file not shown.
Binary file not shown.
1 change: 0 additions & 1 deletion dist/docs/assets/style.Cfu23m_7.css

This file was deleted.

Loading