Friday Talks
A web application for scheduling and managing Friday knowledge sharing sessions among friends or colleagues.
Features
- User authentication system
- Propose, edit, and schedule talks
- Vote on proposed talks to show interest
- Calendar view of scheduled talks
- Resource sharing (slides, videos, code, etc.)
- Track attendance and feedback
Technology Stack
- Backend: Go with Chi router
- Frontend: Server-side rendered HTML with HTMX and Bootstrap 5
- Database: SQLite
- Authentication: JWT tokens
- Templates: Templ for Go HTML templates
Installation
Prerequisites
Building from Source
- Clone the repository:
git clone https://github.com/your-username/friday-talks.git
cd friday-talks
- Install dependencies:
go mod download
- Generate templates:
go install github.com/a-h/templ/cmd/templ@latest
templ generate
- Build the application:
go build -o friday-talks ./cmd/server
Usage
- Run the application:
./friday-talks
- Open your browser and go to:
http://localhost:8080
Command Line Options
--port, -p: Port to listen on (default: 8080)
--db, -d: Path to SQLite database file (default: friday-talks.db)
--jwt-secret, -j: Secret key for JWT tokens (default: your-secret-key)
--static, -s: Path to static files (default: static)
Example:
./friday-talks --port 9000 --db ./data/talks.db
Development
Project Structure
/friday-talks
/cmd
/server # Main application entry point
/internal
/auth # Authentication logic
/handlers # HTTP request handlers
/models # Data models and database access
/templates # Templ HTML templates
/services # Business logic
/migrations # Database migrations
/static # CSS, JS, images
/docs # Documentation
go.mod # Go module definition
README.md # Project documentation
Database Migrations
The application automatically applies migrations during startup. Migrations are located in the /migrations directory.
Security Considerations
For production use:
- Change the default JWT secret key
- Use HTTPS for all connections
- Store sensitive configuration in environment variables or a secure configuration system
- Consider using a more robust database like PostgreSQL for larger deployments
License
This project is licensed under the MIT License - see the LICENSE file for details.