Skip to content

SkateHive/skatehive3.0

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,021 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Skatehive Logo

Skatehive 3.0 is a Next.js application for the Skatehive community. It lets users post content to the Hive blockchain and interact with Farcaster and Ethereum protocols, share skate spots, view community bounties and leaderboards. The project uses Chakra UI for styling along with Tailwind utilities and integrates with Aioha, Wagmi/Viem and React Query.

image

Local Development

  1. Copy .env.local.example to .env.local and fill in the values for your environment.
  2. Install dependencies with pnpm:
pnpm install
  1. Run the development server:
pnpm dev

Open http://localhost:3000 in your browser.

Run pnpm lint to check lint rules and pnpm build to create a production build.

GitHub Codespaces

This repo contains a .devcontainer folder so you can work in GitHub Codespaces. Launch a new codespace from the Code menu on GitHub and the container will install dependencies with pnpm install and forward port 3000 for the Next.js dev server. The container installs Node.js 20 with pnpm 9 via the official Node feature so the environment matches local development. Once setup completes, run pnpm dev to launch the application.

Environment Variables

The app uses a centralized configuration system where sensible defaults are stored in config/app.config.ts (committed to version control). Only secrets and deployment-specific overrides should live in .env.local.

Minimal Setup

For a basic local installation, copy .env.local.example to .env.local and set only the Hive posting key:

HIVE_POSTING_KEY=your_hive_posting_key

All other values (Hive tags, app account, DAO addresses, etc.) are pre-configured in config/app.config.ts. If you enable app-only posting (email-only users), also set:

DEFAULT_HIVE_POSTING_ACCOUNT=skateuser
DEFAULT_HIVE_POSTING_KEY=your_default_account_posting_key

Optional: receive webhook alerts when default-account broadcasts fail/retry:

USERBASE_ALERT_WEBHOOK_URL=https://your-webhook-endpoint

Forking the Project

If you fork Skatehive for your own community, you can override default settings in .env.local:

# Override your community settings
NEXT_PUBLIC_BASE_URL=https://your-community.app
NEXT_PUBLIC_THEME=your_theme

Important: The core configuration (Hive tags, DAO contract addresses, app account) is defined in config/app.config.ts. To fully customize your fork, create your own config file with your values for:

  • HIVE_CONFIG.COMMUNITY_TAG – your Hive community tag
  • HIVE_CONFIG.SEARCH_TAG – your search tag
  • HIVE_CONFIG.APP_ACCOUNT – your app's default Hive user
  • DAO_ADDRESSES – your DAO contract addresses (if using DAO features)
  • APP_CONFIG.NAME, APP_CONFIG.DOMAIN – your app branding

Database migrations (optional)

If you enable the userbase schema, run the SQL files under sql/migrations/. For Supabase, run 0001_userbase.sql first, then 0002_userbase_rls_supabase.sql in the SQL editor. If you enable magic-link auth, also run 0003_userbase_auth.sql. If you enable app-only posting, also run 0007_userbase_soft_posts.sql and 0008_userbase_soft_posts_rls.sql. For self-hosted Postgres, run 0001_userbase.sql, 0003_userbase_auth.sql, and (if enabling app-only posting) 0007_userbase_soft_posts.sql via psql using DATABASE_URL. Migrations are currently manual; there is no automated runner in the repo yet. If you skip Supabase RLS, keep the service role key server-only. Userbase tables are prefixed with userbase_ to avoid conflicts with the VIP signup schema.

Optional Features

Add these variables to .env.local as needed:

  • NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLIC_KEY, SUPABASE_SERVICE_ROLE_KEY – Supabase integration
  • PINATA_JWT – JWT token for Pinata/IPFS uploads (get from Pinata dashboard > API Keys)
  • GIPHY_API_KEY – GIF search in the composer
  • NEXT_PUBLIC_ZORA_API_KEY – Zora embeds
  • EMAIL_USER, EMAIL_PASS, EMAIL_RECOVERYACC – email settings for invites
  • NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID, NEXT_PUBLIC_ALCHEMY_KEY, ETHERSCAN_API_KEY – Web3 features
  • FARCASTER_HUB_URL, FARCASTER_INIT_PASSWORD – Farcaster notifications
  • ADMIN_USERS – comma-separated list of admin usernames
  • JWT_SECRET, VIP_PEPPER, SIGNER_URL, SIGNER_TOKEN – signup/signer system

Translation guidelines for contributors

Skatehive is a multilingual application supporting English, Portuguese (Brazil), Spanish, and Luganda. All human-facing text must be translation-compatible.

How to add translatable strings

When adding new features, always use the translation system instead of hardcoding strings:

  1. Use the useTranslations hook in client components:

    import { useTranslations } from '@/lib/i18n/hooks';
    
    export function MyComponent() {
      const t = useTranslations('feature');
      return <button>{t('actionLabel')}</button>;
    }
  2. Add keys to ALL language files simultaneously (lib/i18n/locales/en.ts, pt-BR.ts, es.ts, lg.ts):

    feature: {
      actionLabel: 'Your text here',
    }
  3. Never hardcode strings. Always prefer translations over direct text.

Translation files and structure

  • lib/i18n/locales/en.ts – English (base language)
  • lib/i18n/locales/pt-BR.ts – Portuguese (Brazil)
  • lib/i18n/locales/es.ts – Spanish
  • lib/i18n/locales/lg.ts – Luganda
  • lib/i18n/hooks.tsuseTranslations(namespace) hook for client components
  • lib/i18n/translations.ts – Central export point for all translations

For more details on the translation system, see AGENTS.md → "Translation system" section.

Application Features

  • Compose posts with Markdown, images, videos or GIFs and publish them to the Hive blockchain.
  • Skate spots map for sharing and discovering places to skate.
  • Bounties for trick challenges with community rewards.
  • Leaderboard ranking Hive users by community engagement.
  • Magazine/Blog pages for curated articles and snaps.
  • Invite system allowing users to create Hive accounts via email.
  • Farcaster notifications that bridge Hive activity to Farcaster miniapp users. See docs/SKATEHIVE_FARCASTER_NOTIFICATIONS.md for implementation details.

Deployment

The app is designed for Vercel. After setting up the environment variables in your Vercel project, deploy with the standard Next.js build process.

About

skatehive community webapp made from mycommunity template

Resources

License

Stars

Watchers

Forks

Contributors

Languages

  • TypeScript 56.0%
  • JavaScript 43.3%
  • Other 0.7%