Welcome to the official repository for the Solana Colombia website. This platform is designed to unite builders, developers, and visionaries across Colombia to build the future of Web3 on Solana.
- Framework: Astro 6 (Server-side Rendering)
- Styling: Tailwind CSS 4
- Database: Cloudflare D1 (SQL database for builders/profiles)
- Deployment: Cloudflare Workers via GitHub Actions
- Email: Resend
- Linting/Formatting: Biome via Ultracite preset
- Wallet integration: Direct injected-provider API (
window.phantom,window.solflare)
- Node.js:
v24.0.0or higher - Package Manager:
pnpm(recommended) ornpm
-
Clone the repository:
git clone https://github.com/Panmoni/solanacolombia-www.git cd solanacolombia-www -
Install dependencies:
# Using pnpm (recommended) pnpm install # Or using npm npm install
-
Setup environment variables: Copy
.env.exampleto.envand fill in the required values (Resend API key, etc.).
To start the local development server:
# Using pnpm
pnpm dev
# Or using npm
npm run devNote: The
devscript automatically runsdb:pullto sync your local D1 database with the production data before starting the Astro dev server (runs on the real Cloudflare workerd runtime).
# Using pnpm
pnpm lint # Check for lint errors
pnpm lint:fix # Fix lint errors
pnpm format # Check formatting
pnpm format:write # Fix formatting
# Or using npm
npm run lint
npm run lint:fix
npm run format
npm run format:write# Using pnpm
pnpm deploy
# Or using npm
npm run deployThis repo ships a set of Claude Code hooks that guard against common footguns when Claude Code is editing files or running commands:
- Protected files:
.env,wrangler.toml,schema.sql, and already-appliedmigrations/*.sqlcannot be edited by the AI. - Blocked commands:
wrangler deploy,wrangler d1 execute --remote,wrangler secret put/delete,DROP TABLE, and other irreversible prod operations are refused before execution. - Auto-format + typecheck: every
.astro/.tsedit is run throughbiomeandastro check. - Pre-PR gate:
gh pr createis blocked unlessastro checkandastro buildboth pass.
See docs/CLAUDE_HOOKS.md for the full list, the rationale, and how to bypass a hook when legitimately needed.
The site uses Astro Content Collections for structured content.
Blog posts are stored in src/content/blog/ as Markdown files.
- Create a new
.mdfile insrc/content/blog/. - Use the following frontmatter:
--- draft: false title: "Your Post Title" snippet: "A short summary of the post." publishDate: "YYYY-MM-DD HH:mm" image: src: "/blog/path-to-image.png" alt: "Description of image" category: "Category Name" author: "Author Name" tags: ["tag1", "tag2"] --- # Your Content Here
- Place images in
public/blog/.
Team members are stored in src/content/team/ as JSON files.
- Create a new
.jsonfile insrc/content/team/(e.g.,name-lastname.json). - Add the following structure:
{ "name": "Full Name", "title": "Role/Title", "xUrl": "https://x.com/username", "xUsername": "username", "image": { "src": "/team/filename.png", "alt": "Full Name" }, "order": 1 } - Place headshots in
public/team/(recommended size: 400x400px).
Gallery items are stored in src/content/gallery/ as JSON files.
- Create a new
.jsonfile insrc/content/gallery/(e.g.,1.json,2.json). - Add the following structure:
{ "title": "Event Name", "description": "Short description of the event.", "image": { "src": "/img/filename.jpg", "alt": "Event Description" }, "order": 1 } - Place images in
public/img/.
Unlike the blog or team members, Builders and Projects are dynamic and stored in the Cloudflare D1 database.
- To Add a Builder: Users must connect their Solana wallet on the
/builderspage and fill out the registration form. - To Add a Project: Once registered as a builder, users can create and manage their projects directly from their dashboard.
- Local Development: When running locally, the
db:pullscript syncs the production database so you can see live data.
The site uses Cloudflare D1 for dynamic data like the Builders directory.
- Local Development: The database is stored locally in
.wrangler/. - Syncing Data: Use
pnpm db:pull(ornpm run db:pull) to pull the latest production data to your local environment. - Wrangler: Use
pnpm exec wrangler d1(ornpx wrangler d1) to run migrations or execute SQL queries.
/
βββ .github/workflows/ # GitHub Actions (auto-deploy to Workers)
βββ public/ # Static assets (images, icons, etc.)
βββ scripts/security/ # Dependency audit tooling
βββ src/
β βββ components/ # Reusable UI components
β βββ content/ # Content Collections (Blog, Team, Gallery)
β βββ layouts/ # Page layouts
β βββ lib/ # Auth, utilities
β βββ pages/ # File-based routing
β β βββ api/ # Server-side API endpoints (D1)
β βββ styles/ # Global styles (Tailwind CSS)
β βββ content.config.ts # Content schema definitions
βββ wrangler.toml # Cloudflare Workers configuration
βββ astro.config.mjs # Astro configuration
We welcome contributions from the community!
- Fork the repo.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
- Telegram: Join our community
- X (Twitter): @SolanaColombia
- Website: solanacolombia.com
Built with β€οΈ by the Solana Colombia community.