# NERDER.LAND - Event Management Documentation A Hugo static site for listing nerdy events in your local community with a cyberpunk/console theme. ## Site Overview - **Framework**: Hugo v0.147.7+ static site generator - **Theme**: Custom cyberpunk/console theme (no external dependencies) - **Content**: Event listings with detailed individual pages - **Styling**: Pure CSS with cyberpunk aesthetics (no JavaScript) ## Prerequisites 1. **Go 1.24.3+** (managed via gvm) 2. **Hugo v0.147.7+** (installed via Go) ## Initial Setup ```bash # Set up Go environment source ~/.gvm/scripts/gvm gvm use go1.24.3 # Install Hugo go install -tags extended github.com/gohugoio/hugo@latest # Verify installation hugo version ``` ## Site Structure ``` nerder.land/ ├── content/ │ ├── events/ # Event markdown files │ └── _index.md # Homepage content ├── layouts/ │ ├── _partials/ # Header, footer components │ ├── events/ # Event page templates │ ├── baseof.html # Base template │ ├── home.html # Homepage template │ └── single.html # Default single page template ├── static/ │ └── css/ │ └── style.css # Cyberpunk theme styles ├── public/ # Generated site (auto-created) └── hugo.toml # Site configuration ``` ## Managing Events ### Creating a New Event 1. Generate the event file: ```bash source ~/.gvm/scripts/gvm && gvm use go1.24.3 hugo new content events/your-event-name.md ``` 2. Edit the event file with proper front matter: ```yaml +++ title = 'Your Event Title' date = '2025-07-15T19:00:00-06:00' # Start date/time (with timezone) end_date = '2025-07-15T23:00:00-06:00' # End date/time (optional) location = 'Venue Name, Address' # Event location organizer = 'Organization Name' # Who's organizing capacity = 50 # Max attendees (optional) cost = 'Free' # or '$25' # Event cost registration_url = 'https://...' # Registration link (optional) contact = 'email@domain.com' # Contact info draft = false # Set to false to publish +++ Brief event description that appears on homepage. Keep this to 1-2 sentences that give a clear overview of what the event is about. ## Full Event Details Add detailed information here including: - Event description - What to expect - Requirements - Schedule - Any other relevant information ``` ### Event Front Matter Fields | Field | Required | Description | |-------|----------|-------------| | `title` | Yes | Event name/title | | `date` | Yes | Start date and time (ISO format) | | `end_date` | No | End date and time | | `location` | No | Venue/address | | `organizer` | No | Who's running the event | | `capacity` | No | Maximum attendees | | `cost` | No | Event price (e.g., "Free", "$25") | | `registration_url` | No | Link to registration page | | `contact` | No | Contact email/info | | `draft` | Yes | Set to `false` to publish | ### Content Structure **Summary Section (before ``)**: - Brief 1-2 sentence description - Appears on homepage event listing - Should give clear overview without details **Full Content (after ``)**: - Detailed event information - Use markdown formatting (headers, lists, etc.) - Only appears on individual event pages ### Event Dates and Timezones - **Important**: Set `buildFuture = true` in `hugo.toml` to show future events - Events automatically sort chronologically on homepage - Past events won't appear on homepage but remain accessible via direct URL **Timezone Handling:** - Use ISO 8601 format with timezone offset: `2025-07-15T19:00:00-06:00` - The site currently displays "MST" (Mountain Time) and "UTC-6" - To change timezone display, update the `dateFormat` calls in templates: - `layouts/home.html` (homepage event listing) - `layouts/events/single.html` (event detail pages) - `layouts/events/rss.xml` (RSS feeds) - Update the hardcoded timezone info in `layouts/events/single.html` ## Development Workflow ### Local Development ```bash # Start development server source ~/.gvm/scripts/gvm && gvm use go1.24.3 hugo server --bind 0.0.0.0 --port 1313 # View site at: http://localhost:1313 ``` ### Building for Production ```bash # Build static site source ~/.gvm/scripts/gvm && gvm use go1.24.3 hugo # Generated files will be in public/ directory ``` ## RSS Feeds & Calendar Integration The site automatically generates multiple feed formats: ### RSS Feeds - **All content**: `https://your-site.com/feed.xml` - **Events only**: `https://your-site.com/events/feed.xml` ### iCal Calendar Feeds - **Master calendar subscription**: `https://your-site.com/events/calendar.ics` - **Individual event downloads**: `https://your-site.com/events/event-name/calendar.ics` ### Feed Features **RSS feeds include:** - Event title and description - Date, location, and cost information - Direct links to full event pages - Properly formatted for feed readers **iCal calendars include:** - Proper timezone information (America/Denver) - Start and end times - Event location and description - Organizer and contact information - Compatible with all major calendar apps ### Calendar App Compatibility The iCal feeds work with: - **Google Calendar** - Subscribe via URL - **Apple Calendar** - Subscribe via URL - **Outlook** - Import or subscribe - **Mozilla Thunderbird** - Calendar subscription - **Any CalDAV client** - Standard iCal format ## Site Configuration ### Basic Settings (`hugo.toml`) ```toml baseURL = 'https://your-domain.com/' languageCode = 'en-us' title = 'NERDER.LAND' buildFuture = true # Required for future events # Ignore README.md from being processed as content ignoreFiles = ["README.md"] [params] description = "Your site description here" eventSubmissionEmail = "events@your-domain.com" # Email for event submissions # RSS and Calendar configuration [outputs] home = ["HTML", "RSS"] section = ["HTML", "RSS", "Calendar"] page = ["HTML", "Calendar"] [outputFormats] [outputFormats.RSS] mediatype = "application/rss" baseName = "feed" [outputFormats.Calendar] mediatype = "text/calendar" baseName = "calendar" isPlainText = true ``` ### Theme Customization The cyberpunk theme is in `static/css/style.css`. Key variables: ```css :root { --neon-green: #00ff41; # Primary text color --neon-blue: #00d4ff; # Links and accents --neon-pink: #ff0080; # Event titles --dark-bg: #0a0a0a; # Background --matrix-green: #41ff00; # Secondary elements } ``` ## Deployment The `public/` directory contains the complete static site. Deploy options: 1. **Netlify**: Connect to git repo, set build command to `hugo` 2. **GitHub Pages**: Use GitHub Actions with Hugo workflow 3. **Traditional hosting**: Upload `public/` contents to web server 4. **CDN**: Any static hosting service (Vercel, Firebase, etc.) ## Troubleshooting ### Events Not Showing 1. Check `draft = false` in front matter 2. Ensure `buildFuture = true` in `hugo.toml` for future events 3. Verify date format: `2025-07-15T19:00:00-06:00` ### ASCII Art Broken - Ensure ASCII art is wrapped in `
` tags in templates - Check for proper escaping in HTML ### Site Not Building 1. Verify Hugo version: `hugo version` 2. Check for syntax errors in content files 3. Ensure Go environment: `go version` ### Template Issues - Hugo v0.147.7+ uses new template system - Templates must be in correct directory structure - Use `hugo --logLevel debug` for detailed error info ## Content Guidelines ### Event Descriptions - **Homepage summary**: 1-2 sentences, engaging but concise - **Full description**: Detailed, use markdown formatting - **Include practical info**: Date, time, location, cost, requirements ### Writing Style - Match the cyberpunk/tech theme - Be informative but exciting - Include clear call-to-action for registration - Mention skill levels if relevant ### Images - Add images to `static/images/` directory - Reference in markdown: `` - Keep file sizes reasonable for web ## Maintenance ### Regular Tasks 1. **Remove past events**: Delete old event files periodically 2. **Update dependencies**: Occasionally update Hugo version 3. **Backup content**: Keep `content/` directory in version control 4. **Monitor analytics**: Track which events get most interest ### Content Archival Consider moving past events to an `archive/` section rather than deleting, to maintain event history and SEO value. ## Community Event Submissions The site includes a "Submit an Event" link in the footer that allows community members to email event details. ### How It Works 1. **Submission Link**: Footer contains a mailto link with pre-formatted email template 2. **Email Template**: Automatically includes required fields (name, date, location, etc.) 3. **Review Process**: Site administrator receives email and manually creates event pages 4. **Configuration**: Email address configurable via `eventSubmissionEmail` in `hugo.toml` ### Email Template Fields The submission email includes these pre-filled fields: - Event Name - Date & Time - Location - Description - Organizer - Contact Info - Cost - Registration URL (if any) ### Processing Submissions When you receive event submissions: 1. **Review the details** for completeness and appropriateness 2. **Create the event file** using `hugo new content events/event-name.md` 3. **Fill in front matter** from the submitted information 4. **Add detailed content** based on the description provided 5. **Set `draft = false`** to publish the event 6. **Reply to submitter** confirming publication or requesting clarification ## Support For issues with Hugo or Go setup, refer to: - [Hugo Documentation](https://gohugo.io/documentation/) - [Hugo Community Forum](https://discourse.gohugo.io/) - [Go Installation Guide](https://golang.org/doc/install)