Skip to content

MakerFriends.com website - A vibrant community platform connecting makers worldwide to share projects, learn new skills, and build lasting friendships through STEM/STEAM innovation.

License

Notifications You must be signed in to change notification settings

MakerFriends/website

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

58 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

MakerFriends.com website πŸš€

A vibrant community platform connecting makers worldwide to share projects, learn new skills, and build lasting friendships through STEM/STEAM innovation.

Astro Tailwind CSS License CI

🌟 Features

  • 🎨 Project Showcase: Browse and share maker projects across multiple categories
  • πŸ‘₯ Maker Directory: Connect with talented makers worldwide
  • πŸ—ΊοΈ Interactive MakerSpaces Map: Discover maker spaces worldwide with Leaflet.js integration
  • πŸ“ MakerSpaces Directory: Searchable directory with filtering and community contributions
  • πŸ“§ Newsletter System: Email subscriptions with multiple backend integrations
  • πŸ“ Blog System: Tutorials, tips, and maker stories
  • 🀝 Community Features: Forums (coming soon), workshops, and events
  • πŸ“± Responsive Design: Beautiful UI that works on all devices
  • ⚑ Static Site: Lightning-fast performance with Astro
  • ☁️ Cloudflare Pages Ready: Optimized for Cloudflare Pages deployment

πŸ†• Recent Additions (v1.6.0)

🎨 WebAwesome UI Components Integration

  • 🧩 WebAwesome UI Library: Complete integration of 400+ professional UI components
  • πŸŽͺ Component Demo Page: Interactive showcase at /webawesome-demo demonstrating all components
  • β™Ώ Accessibility First: All components built with WCAG 2.1 AA compliance
  • πŸ“˜ TypeScript Support: Full TypeScript definitions for all components
  • πŸͺΆ Lightweight: Minimal bundle size impact with optimized performance
  • 🎨 Customizable: Easy theming and customization options

✨ Enhanced User Experience

  • 🚫 Custom 404 Page: Professional error page with helpful navigation
  • πŸ–ΌοΈ Fixed Image URLs: Resolved broken image links across the site
  • βœ… CI Status Badge: Real-time GitHub Actions CI status in README
  • πŸ“š Branch Switching Guide: Comprehensive documentation for development workflows

πŸš€ Performance & SEO Optimization (v1.5.0)

  • πŸ” SEO Optimization: Automatic sitemap generation with @astrojs/sitemap
  • πŸ–ΌοΈ Image Optimization: @astrojs/image integration for optimized image delivery
  • πŸ“¦ Compression: Gzip compression for faster loading times
  • πŸ”’ Security Headers: Comprehensive security headers for enhanced protection
  • βš™οΈ Environment Configuration: Complete environment variable setup

πŸ› οΈ Code Quality & Developer Experience

  • πŸ”§ ESLint Integration: Complete ESLint setup with Astro support
  • πŸ“ Code Quality Tools: ESLint v9 with flat config format and TypeScript support
  • πŸͺ Pre-commit Hooks: Husky integration for automatic code quality checks
  • πŸ“¦ Node.js Version Management: Migrated from nvm to nodenv for better performance
  • πŸ€– Automated Setup: Enhanced setup.sh script for new contributors
  • πŸ’» VS Code Integration: Complete editor configuration for ESLint and formatting
  • πŸ“˜ TypeScript Improvements: Resolved all implicit any types and null checks

πŸ”’ GDPR Compliance & Privacy (v1.3.0)

  • βœ… Complete GDPR Compliance: Full implementation of EU data protection regulations
  • πŸͺ Cookie Consent Management: Granular cookie controls with user preferences
  • πŸ“„ Privacy Documentation: Comprehensive privacy policy and GDPR compliance pages
  • πŸ‘€ User Rights Implementation: Access, rectification, erasure, and data portability
  • πŸ“Š Consent Tracking: Explicit consent management for all data processing
  • πŸ›‘οΈ Data Protection by Design: Privacy built into all systems and processes

πŸ—ΊοΈ Interactive MakerSpaces Map

  • πŸ—ΊοΈ Leaflet.js Integration: Interactive map showing maker spaces worldwide
  • πŸ“ Location Services: Automatic location detection and address search
  • 🎯 Smart Zoom Controls: Precise zoom sensitivity for better user experience
  • ⚑ Tile Preloading: Smooth map interactions with preloaded tiles
  • 🎨 Color-coded Markers: Different colors for ownership models (Commercial, Non-profit, etc.)

πŸ“ MakerSpaces Directory

  • πŸ” Searchable Directory: Filter maker spaces by location, specialties, and ownership
  • πŸ‘₯ Community Contributions: Form for users to add new maker spaces
  • πŸ“‹ Detailed Information: Contact info, equipment, membership costs, and more

πŸ“§ Newsletter System

  • πŸ“¬ Buttondown Integration: Developer-friendly newsletter service
  • βœ… GDPR Compliant: Explicit consent checkbox and privacy notices
  • πŸ“± Responsive Design: Beautiful signup form that works on all devices
  • πŸ“Š Consent Tracking: Records consent timestamps and sources

πŸ“ Project Structure

makerfriends.com/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ favicon.svg
β”‚   β”œβ”€β”€ _redirects          # Cloudflare Pages redirects
β”‚   └── webawesome/         # WebAwesome UI components
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ Navigation.astro
β”‚   β”‚   β”œβ”€β”€ Footer.astro
β”‚   β”‚   β”œβ”€β”€ ProjectCard.astro
β”‚   β”‚   β”œβ”€β”€ NewsletterSignup.astro
β”‚   β”‚   └── CookieConsent.astro
β”‚   β”œβ”€β”€ layouts/
β”‚   β”‚   └── Layout.astro
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ index.astro      # Home page
β”‚   β”‚   β”œβ”€β”€ about.astro      # About Us
β”‚   β”‚   β”œβ”€β”€ makerspaces.astro # MakerSpaces directory
β”‚   β”‚   β”œβ”€β”€ makerspace-map.astro # Interactive map
β”‚   β”‚   β”œβ”€β”€ add-makerspace.astro # Add MakerSpace form
β”‚   β”‚   β”œβ”€β”€ privacy.astro # Privacy Policy
β”‚   β”‚   └── gdpr-compliance.astro # GDPR Compliance
β”‚   β”‚   β”œβ”€β”€ history.astro    # Our History
β”‚   β”‚   β”œβ”€β”€ projects.astro   # Projects Gallery
β”‚   β”‚   β”œβ”€β”€ makers.astro     # Maker Directory
β”‚   β”‚   β”œβ”€β”€ contact.astro    # Contact Form
β”‚   β”‚   β”œβ”€β”€ donate.astro     # Donations
β”‚   β”‚   β”œβ”€β”€ signup.astro     # Sign Up
β”‚   β”‚   β”œβ”€β”€ members.astro    # Member Benefits
β”‚   β”‚   β”œβ”€β”€ forum.astro      # Forum (Coming Soon)
β”‚   β”‚   β”œβ”€β”€ 404.astro        # Custom 404 error page
β”‚   β”‚   β”œβ”€β”€ webawesome-demo.astro # WebAwesome components demo
β”‚   β”‚   └── blog/
β”‚   β”‚       β”œβ”€β”€ index.astro
β”‚   β”‚       └── getting-started-arduino.astro
β”‚   └── styles/
β”‚       └── global.css
β”œβ”€β”€ astro.config.mjs
β”œβ”€β”€ package.json
β”œβ”€β”€ tailwind.config.mjs
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ wrangler.toml           # Cloudflare config
└── README.md

πŸš€ Quick Start

πŸ“‹ Prerequisites

Choose one of the following options:

🐳 Option 1: Containerized Development (Recommended)

Choose one of the following containerization tools:

  • 🐳 Docker Desktop + Docker Compose
  • πŸ„ Rancher Desktop + Docker Compose
  • 🐧 Podman + Podman Compose
  • 🍎 Colima + Docker Compose
  • ⚑ OrbStack + Docker Compose

All tools provide Docker-compatible APIs, so the same commands work across all options.

πŸ’» Option 2: Local Development

  • πŸ“¦ Node.js 22.x (managed by nodenv)
  • πŸ”§ nodenv for Node.js version management
  • πŸ“¦ npm package manager
  • πŸ”€ Git

πŸ“¦ Installation

🐳 Using Docker (Recommended)

  1. πŸ“₯ Clone the repository:
git clone https://github.com/yourusername/makerfriends.com.git
cd makerfriends.com
  1. πŸš€ Start development environment:
# Using Docker Compose (works with all Docker alternatives)
docker-compose up

# Or use the helper script
./docker-dev.sh start

# For Podman users
podman-compose up
  1. 🌐 Open your browser and navigate to http://localhost:4321

πŸ’» Using Local Development

  1. πŸ“₯ Clone the repository:
git clone https://github.com/yourusername/makerfriends.com.git
cd makerfriends.com
  1. ⚑ Quick Setup (Recommended):
# Run the automated setup script
./setup.sh

This script will:

  • βœ… Check for nodenv installation
  • βœ… Install the correct Node.js version
  • βœ… Install all dependencies
  • βœ… Set up Husky pre-commit hooks
  1. πŸ”§ Manual Setup (Alternative):
# Install nodenv (if not already installed)
brew install nodenv
mkdir -p "$(nodenv root)/plugins"
git clone https://github.com/nodenv/node-build.git "$(nodenv root)/plugins/node-build"

# Configure your shell (add to ~/.bash_profile or ~/.bashrc)
export PATH="$HOME/.nodenv/bin:$PATH"
eval "$(nodenv init -)"

# Install Node.js version
nodenv install 22.20.0
nodenv local 22.20.0

# Install dependencies
npm install
  1. πŸš€ Start the development server:
npm run dev
  1. 🌐 Open your browser and navigate to http://localhost:4321

πŸ› οΈ Development

🐳 Containerized Development (Recommended)

# Start development environment
./docker-dev.sh start

# View logs
./docker-dev.sh logs

# Run commands in container
./docker-dev.sh run npm install
./docker-dev.sh run npm run build

# Access container shell
./docker-dev.sh shell

# Stop development environment
./docker-dev.sh stop

# Rebuild containers
./docker-dev.sh rebuild

πŸ”§ Docker Alternative Setup

πŸ„ Rancher Desktop

# Install Rancher Desktop from https://rancherdesktop.io/
# Enable Docker API compatibility in settings
# Then use standard docker-compose commands
docker-compose up

🐧 Podman

# Install Podman and podman-compose
# macOS: brew install podman podman-compose
# Linux: dnf install podman podman-compose
# Then use podman-compose commands
podman-compose up

🍎 Colima (macOS/Linux)

# Install Colima
brew install colima

# Start Colima with Docker API
colima start --with-kubernetes=false

# Use standard docker-compose commands
docker-compose up

⚑ OrbStack (macOS)

# Install OrbStack from https://orbstack.dev/
# Provides Docker-compatible API
# Use standard docker-compose commands
docker-compose up

πŸ“œ Available Scripts

# πŸš€ Development
npm run dev          # Start development server
npm run build        # Build for production
npm run preview      # Preview production build
npm run astro        # Run Astro CLI commands

# πŸ”§ Code Quality
npm run lint         # Run ESLint
npm run lint:fix     # Auto-fix ESLint issues
npm run lint:strict  # Run ESLint with zero warnings allowed
npm run format       # Format code with Prettier
npm run format:check # Check code formatting
npm run type-check   # Run TypeScript type checking

# 🧹 Utilities
npm run clean        # Clean build artifacts and cache

# πŸš€ Deployment
npm run deploy:local    # Deploy to Cloudflare Pages locally
npm run deploy:preview  # Deploy to preview environment

# βš™οΈ Setup
npm run setup        # Set up Node version and install dependencies

πŸ”§ Code Quality Tools

This project includes comprehensive code quality tools:

  • πŸ” ESLint: Linting for JavaScript, TypeScript, and Astro files
  • 🎨 Prettier: Code formatting with Astro support
  • πŸͺ Husky: Pre-commit hooks for code quality
  • πŸ“¦ nodenv: Node.js version management
  • πŸ’» VS Code: Optimized editor configuration
  • πŸ“˜ TypeScript: Full type checking and strict mode
  • πŸ”’ Security Headers: Comprehensive HTTP security headers
  • πŸ–ΌοΈ Image Optimization: Automatic image optimization and compression
  • πŸ” SEO Tools: Automatic sitemap generation

πŸ”„ Development Workflow

  1. πŸš€ Run dev server: Start the development server with hot-reload
  2. ✏️ Make changes: Edit files in src/ directory
  3. πŸ” Code quality: ESLint and Prettier will automatically check your code
  4. πŸͺ Pre-commit hooks: Husky runs ESLint and Prettier before allowing commits
  5. πŸ‘€ See updates: Changes are reflected immediately in the browser
  6. πŸ—οΈ Build: Run npm run build to create production build

πŸ“„ Adding New Pages

  1. πŸ“ Create a new .astro file in src/pages/:
---
import Layout from "../layouts/Layout.astro";
import Navigation from "../components/Navigation.astro";
import Footer from "../components/Footer.astro";
---

<Layout title="Page Title">
  <Navigation />
  <main class="flex-1">
    <!-- Your content here -->
  </main>
  <Footer />
</Layout>
  1. 🌐 The page will be automatically available at /page-name

πŸ“ Adding Blog Posts

  1. πŸ“„ Create a new .astro file in src/pages/blog/:
---
import Layout from "../../layouts/Layout.astro";
// ... imports
---

<Layout title="Your Blog Post Title">
  <!-- Blog content -->
</Layout>
  1. πŸ“‹ Update src/pages/blog/index.astro to include your new post in the list

🎨 Styling

The project uses Tailwind CSS v4 for styling with custom configurations:

Custom Colors

  • Primary: #3B82F6 (Blue)
  • Secondary: #F59E0B (Amber)
  • Accent: #10B981 (Green)
  • Purple: #8B5CF6
  • Pink: #EC4899

Custom Animations

  • .animate-float: Floating animation for elements
  • Custom scrollbar styling

Modifying Styles

  1. Edit src/styles/global.css for global styles
  2. Use Tailwind classes directly in components
  3. Add custom CSS in the @layer directive

🌐 Deployment to Cloudflare Pages

Method 1: Via Cloudflare Dashboard (Recommended)

  1. Build the project:
npm run build
  1. Push to Git:
git add .
git commit -m "Ready for deployment"
git push origin main
  1. Connect to Cloudflare Pages:

    • Go to Cloudflare Dashboard
    • Navigate to Pages
    • Click "Create a project"
    • Connect your Git repository
    • Configure build settings:
      • Build command: npm run build
      • Build output directory: dist
      • Node version: 22
  2. Deploy: Cloudflare will automatically build and deploy your site

Method 2: Via Wrangler CLI

  1. Install Wrangler:
npm install -g wrangler
  1. Login to Cloudflare:
wrangler login
  1. Build and Deploy:
npm run build
wrangler pages deploy dist

Environment Variables (if needed)

Add environment variables in Cloudflare Pages:

  1. Go to your Pages project settings
  2. Navigate to "Environment variables"
  3. Add your variables for production/preview

Custom Domain

  1. Go to your Pages project settings
  2. Navigate to "Custom domains"
  3. Add your domain (e.g., makerfriends.com)
  4. Update DNS records as instructed

πŸ“ Content Management

Updating Site Content

  1. Home Page: Edit src/pages/index.astro
  2. About/History: Edit respective files in src/pages/
  3. Projects: Update project data in src/pages/projects.astro
  4. Makers: Update maker profiles in src/pages/makers.astro

Adding Images

  1. Place images in public/ directory
  2. Reference them with /image-name.jpg
  3. For external images, use full URLs (as currently done with Unsplash)

Logo Placeholder

The site includes a gradient placeholder for the logo. To add your logo:

  1. Add logo file to public/ (e.g., logo.svg or logo.png)
  2. Update Navigation.astro:
<img src="/logo.svg" alt="MakerFriends" class="w-12 h-12" />

πŸ”§ Upgrading Dependencies

Upgrading Astro

# Check current version
npm list astro

# Upgrade to latest version
npm install astro@latest

# Update types if needed
npm install @astrojs/ts-plugin@latest

Upgrading Tailwind CSS

# Upgrade Tailwind
npm install tailwindcss@latest @tailwindcss/vite@latest

# Check for breaking changes in release notes

Upgrading All Dependencies

# Check for outdated packages
npm outdated

# Update all to latest (use with caution)
npm update

# Or use npm-check-updates
npx npm-check-updates -u
npm install

πŸ”Œ Integrations

Current Integrations

  • Tailwind CSS v4: Modern utility-first CSS framework
  • WebAwesome UI Components: 400+ professional UI components with full accessibility support

WebAwesome UI Components

The project now includes a complete UI component library with:

  • Form Components: Input, textarea, select, checkbox, radio, button, etc.
  • Layout Components: Card, dialog, drawer, popup, dropdown, etc.
  • Interactive Components: Progress bars, spinners, sliders, tabs, etc.
  • Utility Components: Icons, date formatting, QR codes, etc.

Using WebAwesome Components

<!-- Example usage in an Astro component -->
<webawesome-button variant="primary" onclick="alert('Hello!')">
  Click Me
</webawesome-button>

<webawesome-input placeholder="Your Name"></webawesome-input>

<webawesome-card>
  <h3 slot="header">Card Title</h3>
  <p>Card content goes here</p>
  <div slot="footer">
    <webawesome-button variant="secondary">Action</webawesome-button>
  </div>
</webawesome-card>

Demo Page

Visit /webawesome-demo to see all components in action with interactive examples.

Adding New Integrations

Astro supports many integrations. To add one:

# Example: Adding React
npx astro add react

# Example: Adding Sitemap
npx astro add sitemap

πŸ§ͺ Testing

Manual Testing Checklist

  • All navigation links work
  • Forms submit correctly
  • Responsive design on mobile/tablet/desktop
  • Images load properly
  • No console errors
  • SEO meta tags present

Performance Testing

  1. Use Lighthouse in Chrome DevTools
  2. Run npm run build and check bundle size
  3. Test on slow network connections

πŸ“Š SEO & Analytics

SEO Features Included

  • Meta descriptions on all pages
  • Open Graph tags for social sharing
  • Semantic HTML structure
  • Fast loading times (static site)

Adding Analytics

To add Google Analytics or other tracking:

  1. Add tracking script to src/layouts/Layout.astro
  2. Add to the <head> section:
<script
  async
  src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"
></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag() {
    dataLayer.push(arguments);
  }
  gtag("js", new Date());
  gtag("config", "GA_MEASUREMENT_ID");
</script>

πŸ› Troubleshooting

Common Issues

Issue: Build fails with "Cannot find module"

  • Solution: Run npm install to ensure all dependencies are installed

Issue: Styles not updating

  • Solution: Clear browser cache or restart dev server

Issue: Tailwind classes not working

  • Solution: Ensure global.css is imported in Layout.astro

Issue: Images not loading in production

  • Solution: Check image paths start with / for public directory

Getting Help

🀝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Contribution Guidelines

  • Follow existing code style
  • Write descriptive commit messages
  • Test your changes thoroughly
  • Update documentation as needed

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ“ž Support


Made with ❀️ by the MakerFriends Team

Happy Making! πŸš€

About

MakerFriends.com website - A vibrant community platform connecting makers worldwide to share projects, learn new skills, and build lasting friendships through STEM/STEAM innovation.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Contributors 3

  •  
  •  
  •