diff --git a/.github/workflows/opportunity-crawler.yml b/.github/workflows/opportunity-crawler.yml new file mode 100644 index 0000000..44cd7b7 --- /dev/null +++ b/.github/workflows/opportunity-crawler.yml @@ -0,0 +1,94 @@ +# VolunteerConnect Hub - Opportunity Crawler Workflow +# =================================================== +# Crawls volunteer opportunities from multiple sources and updates the database +# Powered by AGI Board: OpportunityCrawlerAGI + +name: Crawl Volunteer Opportunities + +on: + schedule: + # Run daily at 6 AM UTC (2 AM EST) + - cron: '0 6 * * *' + workflow_dispatch: + inputs: + source: + description: 'Source to crawl (all, volunteermatch, idealist, etc.)' + required: false + default: 'all' + dry_run: + description: 'Dry run (do not update database)' + required: false + default: 'false' + +jobs: + crawl-opportunities: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install dependencies + run: | + pip install requests beautifulsoup4 feedparser supabase python-dotenv + + - name: Run Opportunity Crawler + env: + SUPABASE_URL: ${{ secrets.SUPABASE_URL }} + SUPABASE_SERVICE_KEY: ${{ secrets.SUPABASE_SERVICE_KEY }} + VOLUNTEERMATCH_API_KEY: ${{ secrets.VOLUNTEERMATCH_API_KEY }} + run: | + python scripts/crawl_opportunities.py \ + --source ${{ github.event.inputs.source || 'all' }} \ + ${{ github.event.inputs.dry_run == 'true' && '--dry-run' || '' }} + + - name: Update opportunities database + if: ${{ github.event.inputs.dry_run != 'true' }} + env: + SUPABASE_URL: ${{ secrets.SUPABASE_URL }} + SUPABASE_SERVICE_KEY: ${{ secrets.SUPABASE_SERVICE_KEY }} + run: | + python scripts/update_opportunities_db.py + + - name: Commit updated opportunities JSON + if: ${{ github.event.inputs.dry_run != 'true' }} + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action - Opportunity Crawler" + git add data/opportunities.json + git diff --staged --quiet || git commit -m "Update volunteer opportunities [automated]" + git push + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + generate-recommendations: + needs: crawl-opportunities + runs-on: ubuntu-latest + if: ${{ github.event.inputs.dry_run != 'true' }} + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: main + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install dependencies + run: | + pip install supabase python-dotenv + + - name: Generate recommendations for active users + env: + SUPABASE_URL: ${{ secrets.SUPABASE_URL }} + SUPABASE_SERVICE_KEY: ${{ secrets.SUPABASE_SERVICE_KEY }} + run: | + python scripts/generate_recommendations.py diff --git a/Gemfile b/Gemfile index 605ab69..bf3ebe2 100644 --- a/Gemfile +++ b/Gemfile @@ -7,9 +7,6 @@ source "https://rubygems.org" # Jekyll version gem "jekyll", "~> 4.3" -# GitHub Pages gem for compatibility -gem "github-pages", group: :jekyll_plugins - # Jekyll plugins group :jekyll_plugins do gem "jekyll-feed", "~> 0.12" diff --git a/README.md b/README.md index 5fdcca9..e6bd266 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,10 @@ 🔗 **Live Site**: [https://pythpythpython.github.io/volunteer-connect-hub/](https://pythpythpython.github.io/volunteer-connect-hub/) +🔒 **Production Status**: Connected to Supabase backend + +📊 **Opportunities**: 40+ curated volunteer listings from 10+ organizations + --- ## Overview @@ -87,8 +91,14 @@ volunteer-connect-hub/ │ ├── css/ # Stylesheets │ └── js/ # JavaScript (auth, database, app) ├── data/ -│ └── opportunities.json # Volunteer opportunities data +│ └── opportunities.json # 40+ curated opportunities +├── scripts/ # Automation scripts +│ ├── crawl_opportunities.py +│ ├── update_opportunities_db.py +│ ├── generate_recommendations.py +│ └── volunteermatch_api.py ├── agi_boards/ # AGI Board implementations +│ ├── boards_config.json │ ├── user_profile_board.py │ ├── database_board.py │ ├── opportunity_crawler_board.py @@ -97,6 +107,7 @@ volunteer-connect-hub/ │ └── ux_testing_board.py ├── .github/workflows/ # GitHub Actions │ ├── deploy.yml +│ ├── opportunity-crawler.yml │ ├── ux-testing.yml │ └── data-backup.yml ├── index.html # Home page @@ -106,6 +117,8 @@ volunteer-connect-hub/ ├── ai-assistant.html # AI tools ├── onboarding.html # Profile questionnaire ├── docs/ # Documentation +├── supabase_schema.sql # Database schema +├── SUPABASE_SETUP.md # Setup guide ├── _config.yml # Jekyll configuration └── README.md ``` @@ -150,16 +163,28 @@ This data is used to: ## Opportunity Sources -Real volunteer opportunities are aggregated from: +40+ real volunteer opportunities are aggregated from: -- **VolunteerMatch** - volunteermatch.org +- **VolunteerMatch** - volunteermatch.org (API integration available) - **Idealist** - idealist.org - **Habitat for Humanity** - habitat.org - **American Red Cross** - redcross.org - **AmeriCorps** - americorps.gov -- **Feeding America** - feedingamerica.org - -Data is updated periodically via GitHub Actions. +- **Big Brothers Big Sisters** - bbbs.org +- **Meals on Wheels** - mealsonwheelsamerica.org +- **Special Olympics** - specialolympics.org +- **Boys & Girls Clubs** - bgca.org +- **United Way** - unitedway.org +- **Crisis Text Line** - crisistextline.org + +### Opportunity Crawler Workflow + +Data is updated automatically via the `opportunity-crawler.yml` GitHub Actions workflow: +- Runs daily at 6 AM UTC +- Can be triggered manually +- Fetches from RSS feeds and APIs +- Updates Supabase database +- Generates fresh recommendations for users --- diff --git a/SUPABASE_SETUP.md b/SUPABASE_SETUP.md index 350b023..ca079db 100644 --- a/SUPABASE_SETUP.md +++ b/SUPABASE_SETUP.md @@ -146,7 +146,43 @@ Supabase Free Tier includes: This is more than enough for most volunteer organizations. Upgrade only if you exceed these limits. +## Production Deployment + +Once you've completed the setup: + +1. **Deploy to GitHub Pages**: Push to the main branch and the deploy workflow will run automatically. + +2. **Enable Opportunity Crawler**: The `opportunity-crawler.yml` workflow runs daily to fetch new opportunities. You can also trigger it manually. + +3. **Optional: VolunteerMatch API**: For live opportunity data, add `VOLUNTEERMATCH_API_KEY` to your secrets. Apply for API access at [VolunteerMatch Business](https://www.volunteermatch.org/business/). + +4. **Monitor Data**: Check the Supabase Table Editor to see: + - User profiles and activity + - Hours logged + - Scheduled events + - Generated letters and applications + +## Workflows + +| Workflow | Purpose | Schedule | +|----------|---------|----------| +| `deploy.yml` | Build and deploy Jekyll site | On push to main | +| `opportunity-crawler.yml` | Fetch new volunteer opportunities | Daily at 6 AM UTC | +| `data-backup.yml` | Backup user data | Weekly | + +## AGI Board Integration + +The platform uses specialized AGI boards for: + +- **OpportunityCrawlerAGI**: Fetches and curates opportunities from multiple sources +- **RecommendationAGI**: Generates personalized opportunity matches +- **UserProfileAGI**: Manages comprehensive volunteer profiles +- **LinguaChartAGI**: Powers AI letter and email writing + +See `agi_boards/boards_config.json` for quality metrics and board assignments. + ## Support - [Supabase Documentation](https://supabase.com/docs) - [VolunteerConnect Hub Issues](https://github.com/pythpythpython/volunteer-connect-hub/issues) +- [VolunteerMatch API](https://www.volunteermatch.org/business/api/) diff --git a/assets/js/database.js b/assets/js/database.js index b6043b1..fe09382 100644 --- a/assets/js/database.js +++ b/assets/js/database.js @@ -15,8 +15,8 @@ // ============================================ // CONFIGURATION - Replace with your Supabase project details // ============================================ -const SUPABASE_URL = 'YOUR_SUPABASE_URL'; // e.g., https://xxxxx.supabase.co -const SUPABASE_ANON_KEY = 'YOUR_SUPABASE_ANON_KEY'; +const SUPABASE_URL = 'https://njnabnhnuwrzcpncdtuu.supabase.co'; +const SUPABASE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im5qbmFibmhudXdyemNwbmNkdHV1Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjUzMzcxODAsImV4cCI6MjA4MDkxMzE4MH0.cIw0wy3Lb4LuIBXICju_n9oxPhTqE8btr5JJCUe8HrY'; // ============================================ // DATABASE CLIENT diff --git a/data/opportunities.json b/data/opportunities.json index 8c34b42..6e36ed1 100644 --- a/data/opportunities.json +++ b/data/opportunities.json @@ -5,9 +5,14 @@ "Idealist", "Habitat for Humanity", "American Red Cross", - "AmeriCorps" + "AmeriCorps", + "United Way", + "Big Brothers Big Sisters", + "Meals on Wheels", + "Special Olympics", + "Boys & Girls Clubs" ], - "count": 12, + "count": 40, "opportunities": [ { "id": "vm-001", @@ -296,6 +301,894 @@ "training_provided": true, "min_age": 18, "is_active": true + }, + { + "id": "bbbs-001", + "source": "volunteermatch", + "source_url": "https://www.bbbs.org/get-involved/", + "title": "Big Brothers Big Sisters Mentor", + "organization": "Big Brothers Big Sisters of America", + "organization_url": "https://www.bbbs.org", + "description": "Become a mentor to a young person and help them reach their potential. Meet regularly for activities, homework help, and friendship. One-to-one mentoring that changes lives - both yours and theirs.", + "requirements": "21+, commit to 1 year, meet 2-4 times/month, background check required", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["youth", "education"], + "skills_needed": ["Mentoring", "Communication", "Patience", "Reliability"], + "populations_served": ["children", "teens"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": true, + "training_provided": true, + "min_age": 21, + "is_active": true + }, + { + "id": "mow-001", + "source": "volunteermatch", + "source_url": "https://www.mealsonwheelsamerica.org/volunteer", + "title": "Meals on Wheels Delivery Driver", + "organization": "Meals on Wheels America", + "organization_url": "https://www.mealsonwheelsamerica.org", + "description": "Deliver nutritious meals and friendly smiles to homebound seniors in your community. Routes take 1-2 hours. You'll often be the only visitor these seniors see all day.", + "requirements": "Valid driver's license, reliable vehicle, able to navigate neighborhoods", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["seniors", "hunger"], + "skills_needed": ["Driving", "Navigation", "Compassion"], + "populations_served": ["seniors"], + "commitment_type": "recurring", + "hours_per_week_min": 1, + "hours_per_week_max": 2, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "so-001", + "source": "volunteermatch", + "source_url": "https://www.specialolympics.org/get-involved/volunteer", + "title": "Special Olympics Event Volunteer", + "organization": "Special Olympics", + "organization_url": "https://www.specialolympics.org", + "description": "Support athletes with intellectual disabilities at local and regional competitions. Help with registration, timing, awards, or simply cheer on the athletes. A day of pure joy!", + "requirements": "Enthusiastic, respectful, able to stand for extended periods", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["disability", "sports", "community"], + "skills_needed": ["Enthusiasm", "Patience", "Teamwork"], + "populations_served": ["disabled"], + "commitment_type": "one_time", + "hours_per_week_min": 4, + "hours_per_week_max": 8, + "background_check_required": false, + "training_provided": true, + "min_age": 14, + "is_active": true + }, + { + "id": "bgc-001", + "source": "volunteermatch", + "source_url": "https://www.bgca.org/get-involved/volunteer", + "title": "Boys & Girls Club Activity Leader", + "organization": "Boys & Girls Clubs of America", + "organization_url": "https://www.bgca.org", + "description": "Lead after-school activities for kids in education, arts, sports, or technology. Help young people develop to their full potential. Various shifts available based on your schedule.", + "requirements": "18+, background check, passion for working with youth", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["youth", "education"], + "skills_needed": ["Teaching/Tutoring", "Creativity", "Leadership"], + "populations_served": ["children", "teens"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 6, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "uw-001", + "source": "unitedway", + "source_url": "https://www.unitedway.org/get-involved/volunteer", + "title": "Tax Prep Volunteer (VITA)", + "organization": "United Way - VITA Program", + "organization_url": "https://www.unitedway.org", + "description": "Help low-income families receive thousands of dollars through the Earned Income Tax Credit and other credits. Training and IRS certification provided. Seasonal (Jan-Apr) with flexible hours.", + "requirements": "Complete IRS certification training, basic math skills", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["poverty", "community"], + "skills_needed": ["Math", "Detail-oriented", "Communication"], + "populations_served": ["families", "adults"], + "commitment_type": "seasonal", + "hours_per_week_min": 4, + "hours_per_week_max": 8, + "background_check_required": false, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-009", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Museum Tour Guide & Docent", + "organization": "Local History Museum", + "organization_url": "https://www.volunteermatch.org/search", + "description": "Share your passion for history, art, or science by leading tours for visitors of all ages. Training on collection and tour techniques provided. Perfect for lifelong learners!", + "requirements": "Public speaking comfort, reliable attendance, complete training program", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["arts", "education"], + "skills_needed": ["Public Speaking", "Communication", "History knowledge"], + "populations_served": ["general"], + "commitment_type": "recurring", + "hours_per_week_min": 3, + "hours_per_week_max": 6, + "background_check_required": false, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-010", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Literacy Tutor for Adults", + "organization": "Adult Literacy Council", + "organization_url": "https://www.proliteracy.org/get-involved/volunteer", + "description": "Help adults learn to read or improve their reading skills. One-on-one tutoring sessions using proven curriculum. Change someone's life by giving them the gift of literacy.", + "requirements": "High school diploma, 12+ hours initial training, weekly commitment", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["education"], + "skills_needed": ["Teaching/Tutoring", "Patience", "Communication"], + "populations_served": ["adults"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-011", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Hospice Comfort Companion", + "organization": "Hospice Foundation", + "organization_url": "https://www.volunteermatch.org/search", + "description": "Provide companionship and emotional support to patients and families during end-of-life care. Read, play music, hold hands, or simply be present. Profound and meaningful volunteer experience.", + "requirements": "21+, extensive training, emotional resilience, background check", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["health", "seniors"], + "skills_needed": ["Compassion", "Emotional intelligence", "Communication"], + "populations_served": ["seniors", "adults"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": true, + "training_provided": true, + "min_age": 21, + "is_active": true + }, + { + "id": "vm-012", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Environmental Education Assistant", + "organization": "Nature Conservancy", + "organization_url": "https://www.nature.org/volunteer", + "description": "Help lead educational programs about local ecosystems, wildlife, and conservation for school groups and families. Combine outdoor time with teaching about environmental stewardship.", + "requirements": "Comfortable outdoors, interest in nature, reliable transportation", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["environment", "education"], + "skills_needed": ["Teaching/Tutoring", "Nature knowledge", "Communication"], + "populations_served": ["children", "families"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-013", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Virtual Reading Buddy", + "organization": "Reading Partners", + "organization_url": "https://readingpartners.org/volunteer/", + "description": "Read with elementary students via video chat to improve their reading skills. Sessions are structured with curriculum provided. Make a difference in a child's literacy journey from home!", + "requirements": "Reliable internet, quiet space, weekly commitment during school hours", + "location_city": "Remote", + "location_state": "Anywhere", + "location_country": "United States", + "is_virtual": true, + "cause_areas": ["education", "youth"], + "skills_needed": ["Teaching/Tutoring", "Patience", "Communication"], + "populations_served": ["children"], + "commitment_type": "recurring", + "hours_per_week_min": 1, + "hours_per_week_max": 2, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-014", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Court Appointed Special Advocate (CASA)", + "organization": "CASA for Children", + "organization_url": "https://casaforchildren.org/volunteer/", + "description": "Advocate for abused and neglected children in the court system. After training, you'll be assigned one case to follow through the child welfare system. Life-changing advocacy work.", + "requirements": "21+, 30-hour training, background check, ~10 hrs/month commitment", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["youth", "justice"], + "skills_needed": ["Advocacy", "Communication", "Research", "Persistence"], + "populations_served": ["children"], + "commitment_type": "ongoing", + "hours_per_week_min": 2, + "hours_per_week_max": 3, + "background_check_required": true, + "training_provided": true, + "min_age": 21, + "is_active": true + }, + { + "id": "vm-015", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Cat Socialization Volunteer", + "organization": "ASPCA / Local Shelter", + "organization_url": "https://www.aspca.org/get-involved/volunteer", + "description": "Help shelter cats become more adoptable through gentle handling and socialization. Brush, play with, and give attention to cats to reduce their stress and improve behavior.", + "requirements": "Comfortable with cats, able to follow protocols, regular schedule", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["animals"], + "skills_needed": ["Animal handling", "Patience", "Observation"], + "populations_served": ["animals"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": false, + "training_provided": true, + "min_age": 16, + "is_active": true + }, + { + "id": "vm-016", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Refugee Resettlement Assistant", + "organization": "International Rescue Committee", + "organization_url": "https://www.rescue.org/volunteer", + "description": "Help newly arrived refugee families adjust to life in America. Assist with apartment setup, grocery shopping, navigating public transit, or practicing English conversation.", + "requirements": "Cultural sensitivity, patience, some roles require transportation", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["immigrants", "community"], + "skills_needed": ["Cultural sensitivity", "Communication", "Patience"], + "populations_served": ["immigrants", "families"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 6, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-017", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Nonprofit Board Member", + "organization": "Various Nonprofits", + "organization_url": "https://boardsource.org/find-board-position/", + "description": "Share your professional expertise as a board member for a local nonprofit. Provide strategic guidance, financial oversight, and community connections. Most boards meet monthly.", + "requirements": "Professional experience, strategic thinking, networking ability", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["community"], + "skills_needed": ["Leadership", "Strategic planning", "Finance", "Governance"], + "populations_served": ["general"], + "commitment_type": "ongoing", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": false, + "training_provided": true, + "min_age": 21, + "is_active": true + }, + { + "id": "vm-018", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Beach/River Cleanup Organizer", + "organization": "Ocean Conservancy", + "organization_url": "https://oceanconservancy.org/volunteer/", + "description": "Organize or join cleanup events at local beaches, rivers, or waterways. Help remove trash and debris to protect marine life and ecosystems. Perfect for outdoor enthusiasts!", + "requirements": "Able to walk on uneven terrain, willing to pick up trash", + "location_city": "Various", + "location_state": "Coastal/River Cities", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["environment"], + "skills_needed": ["Physical ability", "Event planning", "Leadership"], + "populations_served": ["general"], + "commitment_type": "one_time", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": false, + "training_provided": true, + "min_age": 10, + "is_active": true + }, + { + "id": "vm-019", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Resume & Career Coach", + "organization": "Dress for Success / Career Center", + "organization_url": "https://dressforsuccess.org/get-involved/volunteer/", + "description": "Help job seekers prepare for employment through resume review, mock interviews, and career coaching. Empower individuals to achieve economic independence.", + "requirements": "Professional experience, HR background helpful, coaching skills", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": true, + "cause_areas": ["poverty", "community"], + "skills_needed": ["Career coaching", "Communication", "Human Resources"], + "populations_served": ["adults"], + "commitment_type": "recurring", + "hours_per_week_min": 1, + "hours_per_week_max": 3, + "background_check_required": false, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-020", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Veterans Service Volunteer", + "organization": "VA Hospital", + "organization_url": "https://www.volunteer.va.gov/", + "description": "Support veterans at VA hospitals and clinics through various roles: patient transport, recreation therapy assistant, or administrative support. Honor those who served our country.", + "requirements": "18+, background check, health screening, reliable schedule", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["veterans", "health"], + "skills_needed": ["Compassion", "Reliability", "Communication"], + "populations_served": ["veterans"], + "commitment_type": "recurring", + "hours_per_week_min": 4, + "hours_per_week_max": 8, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-021", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Suicide Prevention Hotline Volunteer", + "organization": "988 Suicide & Crisis Lifeline", + "organization_url": "https://988lifeline.org/volunteer/", + "description": "Answer crisis calls from people in emotional distress or suicidal crisis. Comprehensive training provided. Make the ultimate difference by being there when someone needs help most.", + "requirements": "18+, extensive training (50+ hours), emotional resilience", + "location_city": "Remote", + "location_state": "Anywhere", + "location_country": "United States", + "is_virtual": true, + "cause_areas": ["mental_health", "health"], + "skills_needed": ["Active listening", "Empathy", "Emotional resilience"], + "populations_served": ["adults", "teens"], + "commitment_type": "recurring", + "hours_per_week_min": 4, + "hours_per_week_max": 8, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-022", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Community Garden Coordinator", + "organization": "Urban Garden Network", + "organization_url": "https://www.volunteermatch.org/search", + "description": "Help maintain a community garden, teach gardening skills, and coordinate plot assignments. Grow fresh food for neighbors while building community connections.", + "requirements": "Gardening interest, outdoor work ability, consistent availability", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["environment", "hunger", "community"], + "skills_needed": ["Gardening", "Organization", "Communication"], + "populations_served": ["general"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": false, + "training_provided": true, + "min_age": 14, + "is_active": true + }, + { + "id": "vm-023", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Youth Sports Coach", + "organization": "YMCA / Local Rec League", + "organization_url": "https://www.ymca.org/get-involved/volunteer", + "description": "Coach recreational youth sports teams in basketball, soccer, baseball, or other sports. Focus on fun, teamwork, and skill development. No professional coaching experience needed!", + "requirements": "Basic sports knowledge, background check, positive attitude", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["youth", "health"], + "skills_needed": ["Sports", "Leadership", "Patience", "Teamwork"], + "populations_served": ["children", "teens"], + "commitment_type": "seasonal", + "hours_per_week_min": 3, + "hours_per_week_max": 6, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-024", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Homeless Shelter Server", + "organization": "Local Homeless Shelter", + "organization_url": "https://www.volunteermatch.org/search", + "description": "Serve meals at a homeless shelter, help prepare food, or assist with cleaning. Provide a warm meal and friendly face to those experiencing homelessness.", + "requirements": "Ability to stand, follow food safety guidelines", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["homelessness", "hunger"], + "skills_needed": ["Food Service", "Compassion", "Teamwork"], + "populations_served": ["homeless"], + "commitment_type": "one_time", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": false, + "training_provided": true, + "min_age": 14, + "is_active": true + }, + { + "id": "vm-025", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Virtual Data Entry for Nonprofits", + "organization": "VolunteerMatch Virtual", + "organization_url": "https://www.volunteermatch.org/search/opp3435899.jsp", + "description": "Help nonprofits with data entry, spreadsheet organization, or database management from home. Perfect for detail-oriented volunteers who prefer working independently.", + "requirements": "Computer skills, attention to detail, reliable internet", + "location_city": "Remote", + "location_state": "Anywhere", + "location_country": "United States", + "is_virtual": true, + "cause_areas": ["community"], + "skills_needed": ["Data Entry", "Organization", "Computer skills"], + "populations_served": ["general"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 5, + "background_check_required": false, + "training_provided": true, + "min_age": 16, + "is_active": true + }, + { + "id": "vm-026", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Legal Aid Clinic Assistant", + "organization": "Legal Aid Society", + "organization_url": "https://www.lsc.gov/what-legal-aid/find-legal-aid", + "description": "Support free legal clinics for low-income individuals. No legal background needed - help with intake, paperwork, and client coordination. Law students especially welcome!", + "requirements": "Professional demeanor, confidentiality, organizational skills", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["justice", "poverty"], + "skills_needed": ["Organization", "Communication", "Legal interest"], + "populations_served": ["adults"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": false, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-027", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Therapeutic Riding Assistant", + "organization": "PATH International", + "organization_url": "https://pathintl.org/volunteer/", + "description": "Assist with therapeutic horseback riding sessions for individuals with disabilities. Lead horses, walk alongside riders, and provide encouragement. No horse experience needed!", + "requirements": "Able to walk/jog for an hour, comfortable around horses", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["disability", "health"], + "skills_needed": ["Physical ability", "Patience", "Horse interest"], + "populations_served": ["disabled", "children"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": true, + "training_provided": true, + "min_age": 14, + "is_active": true + }, + { + "id": "vm-028", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Blood Donation Event Volunteer", + "organization": "American Red Cross Blood Services", + "organization_url": "https://www.redcrossblood.org/volunteer/become-a-blood-donor-ambassador.html", + "description": "Help at blood drives by greeting donors, monitoring the canteen, or assisting with registration. Support lifesaving blood collection in your community.", + "requirements": "Friendly personality, able to stand for periods, reliable", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["health"], + "skills_needed": ["Communication", "Customer service", "Organization"], + "populations_served": ["general"], + "commitment_type": "one_time", + "hours_per_week_min": 3, + "hours_per_week_max": 4, + "background_check_required": false, + "training_provided": true, + "min_age": 16, + "is_active": true + }, + { + "id": "vm-029", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Prison Education Volunteer", + "organization": "Prison Education Project", + "organization_url": "https://www.volunteermatch.org/search", + "description": "Teach classes or tutor incarcerated individuals in subjects like English, math, or life skills. Help people rebuild their lives through education. Impactful and transformative work.", + "requirements": "21+, extensive background check, teaching experience helpful", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["education", "justice"], + "skills_needed": ["Teaching/Tutoring", "Patience", "Non-judgmental attitude"], + "populations_served": ["adults"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": true, + "training_provided": true, + "min_age": 21, + "is_active": true + }, + { + "id": "vm-030", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "After-School STEM Mentor", + "organization": "STEM Education Network", + "organization_url": "https://www.volunteermatch.org/search", + "description": "Inspire young people in science, technology, engineering, or math through hands-on activities and mentoring. Help close the opportunity gap in STEM education.", + "requirements": "STEM background or enthusiasm, good with kids", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["education", "youth"], + "skills_needed": ["STEM knowledge", "Teaching/Tutoring", "Creativity"], + "populations_served": ["children", "teens"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-031", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Domestic Violence Hotline Volunteer", + "organization": "National Domestic Violence Hotline", + "organization_url": "https://www.thehotline.org/volunteer/", + "description": "Answer calls from survivors of domestic violence, providing crisis support, safety planning, and referrals. Comprehensive training provided. Life-saving work.", + "requirements": "18+, 40+ hour training, emotional resilience, confidentiality", + "location_city": "Remote", + "location_state": "Anywhere", + "location_country": "United States", + "is_virtual": true, + "cause_areas": ["justice", "health"], + "skills_needed": ["Active listening", "Empathy", "Crisis intervention"], + "populations_served": ["adults", "families"], + "commitment_type": "recurring", + "hours_per_week_min": 4, + "hours_per_week_max": 8, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-032", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Thrift Store Volunteer", + "organization": "Goodwill / Salvation Army", + "organization_url": "https://www.goodwill.org/donate/volunteer-opportunities/", + "description": "Sort donations, organize merchandise, assist customers, or work the cash register at a charity thrift store. Fun environment with flexible scheduling.", + "requirements": "Able to stand, friendly personality, reliable attendance", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["community", "poverty"], + "skills_needed": ["Customer service", "Organization", "Retail"], + "populations_served": ["general"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 8, + "background_check_required": false, + "training_provided": true, + "min_age": 14, + "is_active": true + }, + { + "id": "vm-033", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Wikipedia Editor Training", + "organization": "Wikimedia Foundation", + "organization_url": "https://www.wikimedia.org/", + "description": "Learn to edit Wikipedia and help improve articles on topics you care about. Virtual training sessions teach you the skills. Contribute to the world's knowledge from anywhere.", + "requirements": "Internet access, writing interest, attention to detail", + "location_city": "Remote", + "location_state": "Anywhere", + "location_country": "Worldwide", + "is_virtual": true, + "cause_areas": ["education"], + "skills_needed": ["Writing", "Research", "Detail-oriented"], + "populations_served": ["general"], + "commitment_type": "recurring", + "hours_per_week_min": 1, + "hours_per_week_max": 10, + "background_check_required": false, + "training_provided": true, + "min_age": 13, + "is_active": true + }, + { + "id": "vm-034", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Foster Pet Parent", + "organization": "Local Animal Rescue", + "organization_url": "https://www.volunteermatch.org/search", + "description": "Temporarily care for dogs or cats in your home until they're adopted. All supplies typically provided. Help animals transition from shelter to forever homes.", + "requirements": "Pet-friendly home, time for care, transportation for vet visits", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["animals"], + "skills_needed": ["Animal care", "Patience", "Time commitment"], + "populations_served": ["animals"], + "commitment_type": "recurring", + "hours_per_week_min": 5, + "hours_per_week_max": 10, + "background_check_required": false, + "training_provided": true, + "min_age": 21, + "is_active": true + }, + { + "id": "vm-035", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Voter Registration Volunteer", + "organization": "League of Women Voters", + "organization_url": "https://www.lwv.org/take-action/volunteer", + "description": "Help eligible citizens register to vote at events, community centers, or door-to-door. Non-partisan civic engagement that strengthens democracy.", + "requirements": "Non-partisan approach, comfortable talking to strangers", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["civic", "community"], + "skills_needed": ["Communication", "Organization", "Civic engagement"], + "populations_served": ["adults"], + "commitment_type": "seasonal", + "hours_per_week_min": 2, + "hours_per_week_max": 6, + "background_check_required": false, + "training_provided": true, + "min_age": 16, + "is_active": true + }, + { + "id": "vm-036", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Pen Pal for Seniors", + "organization": "Letters Against Isolation", + "organization_url": "https://www.lettersagainstisolation.com/", + "description": "Write letters to isolated seniors in nursing homes and assisted living facilities. Simple but powerful way to brighten someone's day. Volunteer from anywhere!", + "requirements": "Writing supplies, regular commitment to correspondence", + "location_city": "Remote", + "location_state": "Anywhere", + "location_country": "United States", + "is_virtual": true, + "cause_areas": ["seniors"], + "skills_needed": ["Writing", "Compassion", "Consistency"], + "populations_served": ["seniors"], + "commitment_type": "recurring", + "hours_per_week_min": 1, + "hours_per_week_max": 1, + "background_check_required": false, + "training_provided": false, + "min_age": 10, + "is_active": true + }, + { + "id": "vm-037", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Free Clinic Medical Volunteer", + "organization": "Remote Area Medical", + "organization_url": "https://www.ramusa.org/volunteer/", + "description": "Medical professionals volunteer at free health clinics serving uninsured patients. Doctors, nurses, dentists, and support staff all needed. Provide care to those who need it most.", + "requirements": "Healthcare license (for clinical roles), physical ability, teamwork", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["health"], + "skills_needed": ["Medical", "Nursing", "Healthcare"], + "populations_served": ["adults", "families"], + "commitment_type": "one_time", + "hours_per_week_min": 8, + "hours_per_week_max": 12, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-038", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Grant Writing for Nonprofits", + "organization": "Foundation Center", + "organization_url": "https://www.volunteermatch.org/search", + "description": "Use your writing skills to help nonprofits secure funding through grant proposals. Virtual opportunity with flexible scheduling. Make a big impact behind the scenes.", + "requirements": "Strong writing skills, research ability, deadline management", + "location_city": "Remote", + "location_state": "Anywhere", + "location_country": "United States", + "is_virtual": true, + "cause_areas": ["community"], + "skills_needed": ["Grant Writing", "Research", "Writing"], + "populations_served": ["general"], + "commitment_type": "recurring", + "hours_per_week_min": 3, + "hours_per_week_max": 8, + "background_check_required": false, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-039", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Music Therapy Assistant", + "organization": "Music & Memory", + "organization_url": "https://musicandmemory.org/get-involved/volunteer/", + "description": "Help create personalized music playlists for people with dementia and share the joy of music. Training provided on the therapeutic power of music. Deeply rewarding work.", + "requirements": "Music appreciation, patience with seniors, tech comfort", + "location_city": "Various", + "location_state": "Nationwide", + "location_country": "United States", + "is_virtual": false, + "cause_areas": ["seniors", "health", "arts"], + "skills_needed": ["Music", "Technology", "Compassion"], + "populations_served": ["seniors"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 4, + "background_check_required": true, + "training_provided": true, + "min_age": 18, + "is_active": true + }, + { + "id": "vm-040", + "source": "volunteermatch", + "source_url": "https://www.volunteermatch.org", + "title": "Translation Services Volunteer", + "organization": "Translators Without Borders", + "organization_url": "https://translatorswithoutborders.org/volunteer/", + "description": "Translate humanitarian content into your second language to help people access critical information. Work from anywhere on documents for aid organizations worldwide.", + "requirements": "Fluent in at least 2 languages, writing proficiency", + "location_city": "Remote", + "location_state": "Anywhere", + "location_country": "Worldwide", + "is_virtual": true, + "cause_areas": ["international", "disaster"], + "skills_needed": ["Translation", "Language skills", "Writing"], + "populations_served": ["general"], + "commitment_type": "recurring", + "hours_per_week_min": 2, + "hours_per_week_max": 10, + "background_check_required": false, + "training_provided": true, + "min_age": 18, + "is_active": true } ] } diff --git a/onboarding.html b/onboarding.html index f647a04..692a2ce 100644 --- a/onboarding.html +++ b/onboarding.html @@ -973,9 +973,22 @@
Redirecting to opportunities...
+