Skip to content

Extheoisah/afr-btc-ln-bootcamp

Repository files navigation

Africa Bitcoin Lightning Bootcamp Website

A platform for showcasing Bitcoin Lightning bootcamps across Africa, their participants, instructors, projects, and sponsors.

Features

  • Browse bootcamps by location and date
  • View bootcamp participants, instructors, and projects
  • Participants can add their profiles to bootcamps they attended
  • Submit projects built during bootcamps
  • GitHub-based contribution system using Pull Requests

Prerequisites

  • Node.js (v20 or newer)
  • npm or yarn
  • Git

Local Setup

1. Clone the repository

git clone https://github.com/extheoisah/afr-btc-ln-bootcamp.git
cd afr-lightning-bootcamp

2. Install dependencies

npm install
# or
yarn install

3. Set up environment variables

Create a .env.local file in the project root and add:

# GitHub credentials for PR creation (optional, needed for profile/project submissions)
GITHUB_TOKEN=your_github_personal_access_token
REPO_OWNER=repo_owner_username
REPO_NAME=repo_name

If you don't add GitHub credentials, the profile/project submission features will not work.

4. Run the development server

npm run dev
# or
yarn dev

The application will be available at http://localhost:3000.

Project Structure

├── public/
│   ├── data/                   # JSON data files for bootcamps, students, projects, etc.
│   ├── images/                 # Static images
│   └── uploads/                # Uploaded images (profiles, projects)
├── src/
│   ├── app/                    # Next.js app router pages
│   ├── components/             # UI components
│   ├── lib/                    # Utility functions and services
│   │   ├── data.ts             # Data fetching functions
│   │   ├── github.ts           # GitHub API interactions
│   │   ├── profile-service.ts  # Profile submission logic
│   │   └── project-service.ts  # Project submission logic
│   └── types/                  # TypeScript type definitions

Development

Code Formatting

This project uses Prettier for code formatting. To format your code:

# Format all files
npm run format

# Check formatting without changing files
npm run format:check

Spell Checking

We use typos for spell checking. To install:

# Install typos CLI (macOS/Linux)
brew install typos-cli

# Or with cargo
cargo install typos-cli

Then run:

# Check for spelling errors
typos

# Fix spelling errors automatically
typos --write-changes

CI/CD

This project uses GitHub Actions for continuous integration:

  • Code Quality: Automatically checks code formatting with Prettier and linting with ESLint
  • Spell Check: Validates spelling across the codebase using typos-cli

These checks run automatically on pull requests and pushes to the main branch.

Contributing

Data Structure

The application uses JSON files in the public/data directory:

  • bootcamps.json - Information about bootcamps
  • students.json - Student/participant profiles
  • instructors.json - Instructor profiles
  • projects.json - Projects created during bootcamps
  • sponsors.json - Bootcamp sponsors

Adding Content

The recommended way to add content is through the UI:

  1. To add a participant profile: Navigate to /profile
  2. To add a project: Navigate to /projects/submit

These will create Pull Requests that can be reviewed and merged.

Feature Suggestions

If you have ideas for improving this project or have found issues, we welcome your contributions:

  1. Reporting Issues:

    • Open an issue on GitHub with a clear description
    • Include steps to reproduce the bug
    • Add screenshots if applicable
    • Mention your environment (browser, OS, etc.)
  2. Proposing Features:

    • Open an issue with the tag "enhancement"
    • Describe the feature and its benefits
    • Include mockups or examples if possible
  3. Contributing Code:

    • Fork the repository
    • Create a new branch (git checkout -b feature/your-feature-name)
    • Make your changes
    • Run tests and ensure they pass
    • Submit a pull request with a clear description of changes
    • Link related issues in your PR description

We follow a simple development workflow:

  • Issues are triaged and labeled
  • PRs are reviewed by maintainers
  • Approved changes are merged to main

Please follow the existing code style and structure when making contributions.

License

MIT

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published