Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
d01c2e8
Update issue templates
brianfunk Jul 27, 2025
840be45
Bump @eslint/plugin-kit in the npm_and_yarn group across 1 directory
dependabot[bot] Jul 27, 2025
cfff8b4
Bump the npm_and_yarn group across 1 directory with 3 updates
dependabot[bot] Jul 27, 2025
0641ef4
Create SECURITY.md
brianfunk Jul 27, 2025
dae146c
Merge pull request #4 from brianfunk/dependabot/npm_and_yarn/npm_and_…
brianfunk Jul 27, 2025
3d277b5
Merge pull request #2 from brianfunk/dependabot/npm_and_yarn/npm_and_…
brianfunk Jul 27, 2025
df07be2
Merge pull request #5 from brianfunk/dev
brianfunk Jul 27, 2025
564fd65
favicon
brianfunk Jul 27, 2025
fc4e90b
Add favicon links to HTML head
brianfunk Jul 27, 2025
89f40ff
Implement Role & Permission Model for Agency Admin
brianfunk Jul 27, 2025
9ada179
Updated AgencyDashboard.tsx
brianfunk Jul 27, 2025
75b6c54
Implement Agency Auth & Route Structure
brianfunk Jul 27, 2025
2c26d63
Implement Agency Dashboard & Navigation Shell
brianfunk Jul 27, 2025
207e95c
Implement Docket/Comment-Window Management
brianfunk Jul 27, 2025
f7de4eb
Sync Supabase Schema with Agency Admin Specifications
brianfunk Jul 27, 2025
58f0a30
Align Supabase Schema with Data Model Checklist
brianfunk Jul 27, 2025
fab2631
Verify Migrations and Fix Issues
brianfunk Jul 27, 2025
a3cd009
Implement Comprehensive Audit Schema
brianfunk Jul 27, 2025
262b101
Run Supabase Migrations
brianfunk Jul 27, 2025
9121f58
Implement Moderation Queue with File Upload Handling
brianfunk Jul 27, 2025
2293ebd
Comprehensive Migration Cleanup and Implementation
brianfunk Jul 27, 2025
b53b084
Implement User & Role Administration System
brianfunk Jul 27, 2025
e096979
Implement Agency Settings Panel
brianfunk Jul 27, 2025
c934e3e
Add db:migrate script to package.json
brianfunk Jul 27, 2025
e3f4e05
Implement Global & Advanced Search Interface
brianfunk Jul 27, 2025
cc701e1
Install Supabase CLI as dev dependency
brianfunk Jul 27, 2025
2631655
Updated package-lock.json
brianfunk Jul 27, 2025
c4aef95
Implement Reports & Exports Module
brianfunk Jul 27, 2025
793e8ac
Updated App.tsx
brianfunk Jul 27, 2025
cdb8641
Updated package-lock.json
brianfunk Jul 27, 2025
951106c
Add Status Page, Contact Form, and README Badges
brianfunk Jul 27, 2025
a3ef828
Fix Supabase CLI command not found error
brianfunk Jul 27, 2025
b986a3a
Implement Public-Facing Portal & Comment Submission
brianfunk Jul 27, 2025
07537d3
Fix duplicate DocketDetail import names
brianfunk Jul 27, 2025
ffffc01
Implement Authenticated Comment Submission & Integrity Controls
brianfunk Jul 27, 2025
809e618
Fix Vite version to resolve build error
brianfunk Jul 27, 2025
e966ce7
Updated package-lock.json
brianfunk Jul 27, 2025
78f72f9
Fix Vite root configuration
brianfunk Jul 27, 2025
4eddffd
Fix Vite build input configuration
brianfunk Jul 27, 2025
dab879e
Remove explicit index.html input from Vite config
brianfunk Jul 27, 2025
d36bda2
Fix Vite build entry point resolution
brianfunk Jul 27, 2025
f8d5cb5
Clean up build and deployment issues
brianfunk Jul 27, 2025
0740366
Updated PublicLayout.tsx
brianfunk Jul 27, 2025
b288a48
Fix duplicate default export in Contact.tsx
brianfunk Jul 27, 2025
1ea4968
Fix missing default export in Footer.tsx
brianfunk Jul 27, 2025
09f22ae
Updated Contact.tsx
brianfunk Jul 27, 2025
988bdbd
Updated Contact.tsx
brianfunk Jul 27, 2025
91285b7
Updated App.tsx
brianfunk Jul 27, 2025
aeffea0
Implement hCaptcha with provided keys
brianfunk Jul 27, 2025
91125f7
Fix Vite build entry module resolution error
brianfunk Jul 27, 2025
6023fa8
Fix Vite root directory configuration
brianfunk Jul 27, 2025
9a48b16
Updated vite.config.ts
brianfunk Jul 27, 2025
d269aff
Added vite.config.ts.timestamp-1753642541368-3049994c5672b.mjs
brianfunk Jul 27, 2025
35da17b
Deleted vite.config.ts.timestamp-1753642541368-3049994c5672b.mjs
brianfunk Jul 27, 2025
755ef9f
Fix SecurityBanner import in PublicLogin
brianfunk Jul 27, 2025
416bfcc
Implement Public Login Sign In/Sign Up Functionality
brianfunk Jul 27, 2025
bfa5bec
Add Netlify redirect configuration
brianfunk Jul 27, 2025
1efad7a
Merge pull request #6 from brianfunk/bolt
brianfunk Jul 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# ---------- SUPABASE ----------
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key-here
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key-here

# ---------- EMAIL SERVICE ----------
RESEND_API_KEY=your-resend-api-key-here

# ---------- CAPTCHA ----------
VITE_HCAPTCHA_SITE_KEY=458ab136-5512-4228-8256-9a0ee862c176
HCAPTCHA_SECRET_KEY=ES_36462d6276ff498995c31791e6c8acc2

# ---------- EMAIL SERVICE ----------
RESEND_API_KEY=your-resend-api-key-here

# ---------- STORAGE BUCKETS ----------
VITE_STORAGE_BUCKET_ATTACHMENTS=comment-attachments
VITE_STORAGE_BUCKET_EXPORTS=agency-exports
VITE_STORAGE_BUCKET_AGENCY_ASSETS=agency-assets

# ---------- APPLICATION ----------
VITE_SITE_URL=http://localhost:5173
VITE_EMAIL_FROM=notifications@opencomments.us
VITE_SUPPORT_EMAIL=support@opencomments.us

# ---------- DEVELOPMENT ----------
NODE_ENV=development
VITE_DEBUG_MODE=false

# ---------- OPTIONAL FEATURES ----------
VITE_ENABLE_ANALYTICS=false
VITE_MAX_FILE_SIZE_MB=10
38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]

**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]

**Additional context**
Add any other context about the problem here.
10 changes: 10 additions & 0 deletions .github/ISSUE_TEMPLATE/custom.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''

---


20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
142 changes: 141 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,141 @@
opencomments
# OpenComments

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Open Source](https://badges.frapsoft.com/os/v1/open-source.svg?v=103)](https://opensource.org/)
[![Built by MetaPhase](https://img.shields.io/badge/Built%20by-MetaPhase-blue)](https://metaphase.tech)
[![Status](https://img.shields.io/badge/Status-Active-brightgreen)](https://status.opencomments.us)
[![Deploy Status](https://api.netlify.com/api/v1/badges/your-site-id/deploy-status)](https://app.netlify.com/sites/your-site-name/deploys)
[![CI/CD](https://github.com/MetaPhase-Consulting/opencomments/workflows/CI%2FCD%20Pipeline/badge.svg)](https://github.com/MetaPhase-Consulting/opencomments/actions)
[![Accessibility](https://img.shields.io/badge/Accessibility-WCAG%202.1%20AA-green)](https://www.w3.org/WAI/WCAG21/quickref/)
[![Security](https://img.shields.io/badge/Security-SOC%202-blue)](https://supabase.com/security)
[![Uptime](https://img.shields.io/badge/Uptime-99.9%25-brightgreen)](https://status.opencomments.us)
[![Version](https://img.shields.io/github/package-json/v/MetaPhase-Consulting/opencomments)](https://github.com/MetaPhase-Consulting/opencomments/releases)

# OpenComments

OpenComments is a modern, accessible public commenting platform that enables transparent government by making it easy for agencies to collect, moderate, and publish public feedback on policies and proposals.

## 🏛️ Project Purpose

OpenComments bridges the gap between government agencies and citizens by providing a secure, user-friendly platform for public comment periods. Built with modern web technologies and designed for accessibility, it ensures every voice can be heard in the democratic process.

## 🛠️ Tech Stack

- **Frontend**: React 18 + TypeScript + Tailwind CSS
- **Backend**: Supabase (PostgreSQL + Auth + Storage + Edge Functions)
- **Testing**: Vitest + Cypress + Playwright
- **Deployment**: Netlify (Frontend) + Supabase (Backend)
- **CI/CD**: GitHub Actions

## 🚀 Quick Start

### Prerequisites
- Node.js 18+
- npm or yarn
- Supabase account

### Setup
```bash
# Clone repository
git clone https://github.com/your-org/opencomments.git
cd opencomments

# Install dependencies
npm install

# Copy environment template
cp .env.example .env

# Configure your Supabase credentials in .env
# VITE_SUPABASE_URL=https://your-project.supabase.co
# VITE_SUPABASE_ANON_KEY=your-anon-key

# Apply database migrations
npm run db:migrate

# Start development server
npm run dev
```

Visit `http://localhost:5173` to see the application.

## 📁 Folder Structure

```
opencomments/
├── src/
│ ├── components/ # Reusable UI components
│ ├── pages/ # Route components
│ │ ├── agency/ # Agency admin portal
│ │ └── public/ # Public-facing pages
│ ├── hooks/ # Custom React hooks
│ ├── contexts/ # React context providers
│ ├── lib/ # Utilities and configurations
│ └── types/ # TypeScript type definitions
├── supabase/
│ ├── migrations/ # Database schema changes
│ └── functions/ # Edge functions
├── tests/ # Test files
├── docs/ # Documentation
└── public/ # Static assets
```

## 🧪 Development

### Testing
```bash
# Run unit tests
npm run test

# Run E2E tests
npm run cypress:run

# Run accessibility tests
npm run test:a11y
```

### Database
```bash
# Apply migrations
npm run db:migrate

# Reset database (development only)
supabase db reset
```

### Quality Assurance
Before deploying, ensure all tests pass:
1. Unit tests: `npm run test`
2. E2E tests: `npm run cypress:run`
3. Accessibility: `npm run test:a11y`
4. Manual QA: Follow `QA_CHECKLIST.md`

## 📚 Documentation

- **[DEVELOPER.md](docs/DEVELOPER.md)** - Development setup and workflows
- **[ARCHITECTURE.md](docs/ARCHITECTURE.md)** - System design and technical overview
- **[DATAMODEL.md](docs/DATAMODEL.md)** - Database schema and relationships
- **[AGENCY_ADMIN_GUIDE.md](docs/AGENCY_ADMIN_GUIDE.md)** - Guide for government staff
- **[PUBLIC_USER_GUIDE.md](docs/PUBLIC_USER_GUIDE.md)** - Guide for citizens

## 🤝 Contributing

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

## 📄 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## 🆘 Support

- **Documentation**: Check the `docs/` folder for detailed guides
- **Issues**: Report bugs via GitHub Issues
- **Email**: [support@opencomments.us](mailto:support@opencomments.us)

---

**Built with ❤️ for transparent government**
21 changes: 21 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Security Policy

## Supported Versions

Use this section to tell people about which versions of your project are
currently being supported with security updates.

| Version | Supported |
| ------- | ------------------ |
| 5.1.x | :white_check_mark: |
| 5.0.x | :x: |
| 4.0.x | :white_check_mark: |
| < 4.0 | :x: |

## Reporting a Vulnerability

Use this section to tell people how to report a vulnerability.

Tell them where to go, how often they can expect to get an update on a
reported vulnerability, what to expect if the vulnerability is accepted or
declined, etc.
Loading