Initial commit: Hugo static site for nerdy events
Some checks failed
Build Hugo Site / build (push) Failing after 19s
Some checks failed
Build Hugo Site / build (push) Failing after 19s
- Custom cyberpunk/console theme with pure CSS - Event management with RSS and iCal calendar feeds - Gitea workflow for automated deployment - Complete documentation and setup instructions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
commit
217e4a5de5
19
.gitea/workflows/build_hugo.yaml
Normal file
19
.gitea/workflows/build_hugo.yaml
Normal file
@ -0,0 +1,19 @@
|
||||
name: Build Hugo Site
|
||||
run-name: ${{ gitea.actor }} is building Nerderland
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: docker
|
||||
steps:
|
||||
- run: apk add --no-cache nodejs rsync
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: 'true'
|
||||
- uses: actions/setup-go@v3
|
||||
with:
|
||||
go-version: '1.24.3'
|
||||
- run: go install -tags extended github.com/gohugoio/hugo@v0.147.7
|
||||
- run: hugo version
|
||||
- run: hugo
|
||||
- run: rsync -avz --delete ./public/ /sites/nerderland/
|
0
.hugo_build.lock
Normal file
0
.hugo_build.lock
Normal file
343
README.md
Normal file
343
README.md
Normal file
@ -0,0 +1,343 @@
|
||||
# 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.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## 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 `<!--more-->`)**:
|
||||
- Brief 1-2 sentence description
|
||||
- Appears on homepage event listing
|
||||
- Should give clear overview without details
|
||||
|
||||
**Full Content (after `<!--more-->`)**:
|
||||
- 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 `<pre>` 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)
|
5
archetypes/default.md
Normal file
5
archetypes/default.md
Normal file
@ -0,0 +1,5 @@
|
||||
+++
|
||||
date = '{{ .Date }}'
|
||||
draft = true
|
||||
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
|
||||
+++
|
44
content/events/cyberpunk-hackathon.md
Normal file
44
content/events/cyberpunk-hackathon.md
Normal file
@ -0,0 +1,44 @@
|
||||
+++
|
||||
title = 'Cyberpunk Hackathon: Code the Future'
|
||||
date = '2025-06-15T09:00:00-06:00'
|
||||
end_date = '2025-06-16T18:00:00-06:00'
|
||||
location = 'TechHub Downtown, 123 Main St'
|
||||
organizer = 'Local Hackers Collective'
|
||||
capacity = 50
|
||||
cost = 'Free'
|
||||
registration_url = 'https://example.com/register'
|
||||
contact = 'hackathon@nerder.land'
|
||||
draft = false
|
||||
+++
|
||||
|
||||
Join us for a 24-hour coding marathon where reality meets the digital underground! Build AR interfaces, blockchain solutions, or AI-powered tools in this innovation celebration.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Event Description
|
||||
|
||||
Dive into the neon-lit world of cyberpunk as we challenge developers, designers, and tech enthusiasts to build applications that push the boundaries of what's possible. Whether you're creating AR interfaces, blockchain solutions, or AI-powered tools, this hackathon celebrates the spirit of innovation.
|
||||
|
||||
## What to Expect
|
||||
|
||||
- **24 hours of non-stop coding**
|
||||
- **Free meals and energy drinks** (because sleep is for the weak)
|
||||
- **Mentorship from industry experts**
|
||||
- **Amazing prizes** including hardware, software licenses, and crypto rewards
|
||||
- **Networking with like-minded rebels**
|
||||
|
||||
## Categories
|
||||
|
||||
- Best Overall Hack
|
||||
- Most Creative Use of AI
|
||||
- Blockchain Innovation
|
||||
- Cybersecurity Solution
|
||||
- UI/UX Design Excellence
|
||||
|
||||
## Requirements
|
||||
|
||||
- Bring your own laptop and charger
|
||||
- Form teams of 2-4 people (or go solo if you dare)
|
||||
- All skill levels welcome - we'll have beginner-friendly workshops
|
||||
|
||||
Get ready to jack in and code the future!
|
53
content/events/maker-workshop.md
Normal file
53
content/events/maker-workshop.md
Normal file
@ -0,0 +1,53 @@
|
||||
+++
|
||||
title = 'DIY Electronics Workshop: Build Your Own Gadgets'
|
||||
date = '2025-06-22T14:00:00-06:00'
|
||||
end_date = '2025-06-22T17:00:00-06:00'
|
||||
location = 'MakerSpace Lab, 789 Circuit St'
|
||||
organizer = 'Hardware Hackers Guild'
|
||||
capacity = 15
|
||||
cost = '$25 (includes materials)'
|
||||
registration_url = 'https://example.com/maker-register'
|
||||
contact = 'makers@nerder.land'
|
||||
draft = false
|
||||
+++
|
||||
|
||||
Get your hands dirty with circuits, sensors, and microcontrollers! Learn circuit design, soldering, and programming while building your own working gadgets to take home.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Workshop Overview
|
||||
|
||||
Join us for an afternoon of hands-on electronics where you'll learn the fundamentals of circuit design and build your own working gadgets to take home.
|
||||
|
||||
## What You'll Build
|
||||
|
||||
Choose from one of these beginner-friendly projects:
|
||||
|
||||
- **LED Matrix Display** - Program patterns and text
|
||||
- **Motion Sensor Alarm** - Detect intruders with style
|
||||
- **Temperature Monitor** - IoT device with wireless connectivity
|
||||
- **Sound Reactive LEDs** - Lights that dance to music
|
||||
|
||||
## What's Included
|
||||
|
||||
- All electronic components and tools
|
||||
- Step-by-step instruction guides
|
||||
- Expert mentorship from experienced makers
|
||||
- Soldering lessons for beginners
|
||||
- Take-home project kit
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- No prior experience required!
|
||||
- Bring curiosity and willingness to learn
|
||||
- Safety glasses will be provided
|
||||
|
||||
## Skills You'll Learn
|
||||
|
||||
- Basic circuit design
|
||||
- Soldering techniques
|
||||
- Microcontroller programming
|
||||
- Sensor integration
|
||||
- Troubleshooting electronic systems
|
||||
|
||||
Perfect for beginners looking to break into the world of electronics and making!
|
39
content/events/retro-gaming-night.md
Normal file
39
content/events/retro-gaming-night.md
Normal file
@ -0,0 +1,39 @@
|
||||
+++
|
||||
title = 'Retro Gaming Night: Pixels & Power-Ups'
|
||||
date = '2025-06-08T19:00:00-06:00'
|
||||
end_date = '2025-06-08T23:00:00-06:00'
|
||||
location = 'Arcade Underground, 456 Neon Ave'
|
||||
organizer = 'Pixel Pushers Society'
|
||||
capacity = 30
|
||||
cost = '$10 cover charge'
|
||||
contact = 'pixels@nerder.land'
|
||||
draft = false
|
||||
+++
|
||||
|
||||
Step back in time to the golden age of gaming! Classic arcade cabinets, console gaming stations, tournaments with prizes, and chiptune DJ sets all night long.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Event Highlights
|
||||
|
||||
- **Classic arcade cabinets** from the 80s and 90s
|
||||
- **Console gaming stations** with retro systems
|
||||
- **High score competitions** with prizes
|
||||
- **Chiptune DJ sets** all night long
|
||||
- **Retro snacks and drinks** (think Mountain Dew and pizza!)
|
||||
|
||||
## Featured Games
|
||||
|
||||
- Street Fighter II
|
||||
- Pac-Man Championship
|
||||
- Contra Co-op Challenge
|
||||
- Tetris Speed Runs
|
||||
- Mario Kart 64 Tournament
|
||||
|
||||
## Tournaments
|
||||
|
||||
- 7:30 PM - Street Fighter II Tournament
|
||||
- 8:30 PM - Pac-Man High Score Challenge
|
||||
- 9:30 PM - Mario Kart 64 Grand Prix
|
||||
|
||||
Prizes include vintage gaming memorabilia, gift cards, and bragging rights that last forever!
|
27
hugo.toml
Normal file
27
hugo.toml
Normal file
@ -0,0 +1,27 @@
|
||||
baseURL = 'https://example.org/'
|
||||
languageCode = 'en-us'
|
||||
title = 'NERDER.LAND'
|
||||
buildFuture = true
|
||||
|
||||
# Ignore README.md from being processed as content
|
||||
ignoreFiles = ["README.md"]
|
||||
|
||||
[params]
|
||||
description = "Welcome to the underground tech scene. Here you'll find the latest nerdy events in our community."
|
||||
eventSubmissionEmail = "events@nerder.land"
|
||||
|
||||
# RSS configuration for events
|
||||
[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
|
11
layouts/_partials/footer.html
Normal file
11
layouts/_partials/footer.html
Normal file
@ -0,0 +1,11 @@
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+===================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
<p class="prompt">NERDER.LAND {{ now.Year }} - Connecting the tech underground</p>
|
||||
<p style="margin-top: 1rem; font-size: 0.8rem;">
|
||||
<a href="{{ "events/feed.xml" | absURL }}">📡 RSS Feed</a> |
|
||||
<a href="{{ "events/calendar.ics" | absURL }}">📅 Calendar Subscription</a> |
|
||||
<a href="mailto:{{ .Site.Params.eventSubmissionEmail | default "events@nerder.land" }}?subject=Event Submission&body=Please include:%0A%0AEvent Name:%0ADate & Time:%0ALocation:%0ADescription:%0AOrganizer:%0AContact Info:%0ACost:%0ARegistration URL (if any):">📧 Submit an Event</a>
|
||||
</p>
|
10
layouts/_partials/header.html
Normal file
10
layouts/_partials/header.html
Normal file
@ -0,0 +1,10 @@
|
||||
{{ if .IsHome }}
|
||||
<h1>{{ site.Title }}</h1>
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+===================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
{{ else }}
|
||||
<h2><a href="{{ "/" | relURL }}">{{ site.Title }}</a></h2>
|
||||
{{ end }}
|
29
layouts/baseof.html
Normal file
29
layouts/baseof.html
Normal file
@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ or site.Language.LanguageCode }}" dir="{{ or site.Language.LanguageDirection `ltr` }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{ if .IsHome }}{{ site.Title }}{{ else }}{{ .Title }} - {{ site.Title }}{{ end }}</title>
|
||||
<link rel="stylesheet" href="{{ "css/style.css" | relURL }}">
|
||||
|
||||
<!-- RSS Feeds -->
|
||||
<link rel="alternate" type="application/rss+xml" title="{{ site.Title }} - All Content" href="{{ "feed.xml" | absURL }}">
|
||||
<link rel="alternate" type="application/rss+xml" title="{{ site.Title }} - Events" href="{{ "events/feed.xml" | absURL }}">
|
||||
|
||||
<!-- Calendar Feeds -->
|
||||
<link rel="alternate" type="text/calendar" title="{{ site.Title }} - Events Calendar" href="{{ "events/calendar.ics" | absURL }}">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header>
|
||||
{{ partial "header.html" . }}
|
||||
</header>
|
||||
<main>
|
||||
{{ block "main" . }}{{ end }}
|
||||
</main>
|
||||
<footer>
|
||||
{{ partial "footer.html" . }}
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
48
layouts/events/calendar.ics
Normal file
48
layouts/events/calendar.ics
Normal file
@ -0,0 +1,48 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//NERDER.LAND//Event Calendar//EN
|
||||
NAME:{{ .Site.Title }} Events
|
||||
X-WR-CALNAME:{{ .Site.Title }} Events
|
||||
DESCRIPTION:{{ .Site.Params.description }}
|
||||
TIMEZONE-ID:America/Denver
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Denver
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0600
|
||||
TZNAME:MDT
|
||||
DTSTART:20250309T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:-0600
|
||||
TZOFFSETTO:-0700
|
||||
TZNAME:MST
|
||||
DTSTART:20251102T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
{{- range .RegularPages }}
|
||||
BEGIN:VEVENT
|
||||
UID:{{ .File.UniqueID }}@{{ $.Site.BaseURL | replaceRE "^https?://" "" }}
|
||||
DTSTART;TZID=America/Denver:{{ .Params.date | dateFormat "20060102T150405" }}
|
||||
{{- if .Params.end_date }}
|
||||
DTEND;TZID=America/Denver:{{ .Params.end_date | dateFormat "20060102T150405" }}
|
||||
{{- else }}
|
||||
DTEND;TZID=America/Denver:{{ .Params.date.Add (time.ParseDuration "2h") | dateFormat "20060102T150405" }}
|
||||
{{- end }}
|
||||
DTSTAMP:{{ now | dateFormat "20060102T150405Z" }}
|
||||
SUMMARY:{{ .Title }}
|
||||
DESCRIPTION:{{ .Summary | replaceRE "\n" "\\n" | replaceRE "," "\\," }}
|
||||
{{- if .Params.location }}
|
||||
LOCATION:{{ .Params.location | replaceRE "," "\\," }}
|
||||
{{- end }}
|
||||
URL:{{ .Permalink }}
|
||||
{{- if .Params.organizer }}
|
||||
ORGANIZER:{{ .Params.organizer | replaceRE "," "\\," }}
|
||||
{{- end }}
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
{{- end }}
|
||||
END:VCALENDAR
|
39
layouts/events/rss.xml
Normal file
39
layouts/events/rss.xml
Normal file
@ -0,0 +1,39 @@
|
||||
{{- $pctx := . -}}
|
||||
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
|
||||
{{- $pages := slice -}}
|
||||
{{- if or $.IsHome $.IsSection -}}
|
||||
{{- $pages = $pctx.RegularPages -}}
|
||||
{{- else -}}
|
||||
{{- $pages = $pctx.Pages -}}
|
||||
{{- end -}}
|
||||
{{- $limit := .Site.Config.Services.RSS.Limit -}}
|
||||
{{- if ge $limit 1 -}}
|
||||
{{- $pages = $pages | first $limit -}}
|
||||
{{- end -}}
|
||||
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
|
||||
<link>{{ .Permalink }}</link>
|
||||
<description>{{ .Site.Params.description | default "Recent events" }}</description>
|
||||
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
|
||||
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
|
||||
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
|
||||
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
|
||||
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
|
||||
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
|
||||
{{- with .OutputFormats.Get "RSS" -}}
|
||||
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
|
||||
{{- end -}}
|
||||
{{ range $pages }}
|
||||
<item>
|
||||
<title>{{ .Title }}</title>
|
||||
<link>{{ .Permalink }}</link>
|
||||
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
|
||||
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
|
||||
<guid>{{ .Permalink }}</guid>
|
||||
<description>{{ with .Params.location }}📍 {{ . }} | {{ end }}{{ with .Params.date }}🗓️ {{ dateFormat "January 2, 2006 at 3:04 PM MST" . }} | {{ end }}{{ with .Params.cost }}💰 {{ . }} | {{ end }}{{ .Summary | html }}</description>
|
||||
</item>
|
||||
{{ end }}
|
||||
</channel>
|
||||
</rss>
|
98
layouts/events/single.html
Normal file
98
layouts/events/single.html
Normal file
@ -0,0 +1,98 @@
|
||||
{{ define "main" }}
|
||||
<article class="event-detail">
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+==================================================================+
|
||||
| EVENT DETAILS |
|
||||
+==================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<h1>{{ .Title }}</h1>
|
||||
|
||||
<div class="event-meta">
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Date & Time</span>
|
||||
<span class="meta-value">{{ .Params.date | dateFormat "Monday, January 2, 2006 at 3:04 PM MST" }}</span>
|
||||
</div>
|
||||
|
||||
{{ if .Params.end_date }}
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">End Time</span>
|
||||
<span class="meta-value">{{ .Params.end_date | dateFormat "Monday, January 2, 2006 at 3:04 PM MST" }}</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Timezone</span>
|
||||
<span class="meta-value">Mountain Time (UTC-6)</span>
|
||||
</div>
|
||||
|
||||
{{ if .Params.location }}
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Location</span>
|
||||
<span class="meta-value">{{ .Params.location }}</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.organizer }}
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Organizer</span>
|
||||
<span class="meta-value">{{ .Params.organizer }}</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.capacity }}
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Capacity</span>
|
||||
<span class="meta-value">{{ .Params.capacity }} people</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.cost }}
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Cost</span>
|
||||
<span class="meta-value">{{ .Params.cost }}</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<div class="event-content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
|
||||
{{ if .Params.registration_url }}
|
||||
<div class="registration">
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+--------------------------------------------------------------+
|
||||
| REGISTRATION |
|
||||
+--------------------------------------------------------------+
|
||||
</pre>
|
||||
</div>
|
||||
<p class="prompt"><a href="{{ .Params.registration_url }}">Register for this event</a></p>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.contact }}
|
||||
<div class="contact">
|
||||
<h3>Contact Information</h3>
|
||||
<p>{{ .Params.contact }}</p>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<div class="calendar-actions">
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+--------------------------------------------------------------+
|
||||
| ADD TO CALENDAR |
|
||||
+--------------------------------------------------------------+
|
||||
</pre>
|
||||
</div>
|
||||
<p class="prompt">
|
||||
<a href="{{ .RelPermalink }}calendar.ics" download>📅 Download Event (.ics)</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</article>
|
||||
{{ end }}
|
48
layouts/events/single.ics
Normal file
48
layouts/events/single.ics
Normal file
@ -0,0 +1,48 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//NERDER.LAND//Event Calendar//EN
|
||||
NAME:{{ .Title }}
|
||||
X-WR-CALNAME:{{ .Title }}
|
||||
TIMEZONE-ID:America/Denver
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Denver
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0600
|
||||
TZNAME:MDT
|
||||
DTSTART:20250309T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:-0600
|
||||
TZOFFSETTO:-0700
|
||||
TZNAME:MST
|
||||
DTSTART:20251102T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:{{ .File.UniqueID }}@{{ .Site.BaseURL | replaceRE "^https?://" "" }}
|
||||
DTSTART;TZID=America/Denver:{{ .Params.date | dateFormat "20060102T150405" }}
|
||||
{{- if .Params.end_date }}
|
||||
DTEND;TZID=America/Denver:{{ .Params.end_date | dateFormat "20060102T150405" }}
|
||||
{{- else }}
|
||||
DTEND;TZID=America/Denver:{{ .Params.date.Add (time.ParseDuration "2h") | dateFormat "20060102T150405" }}
|
||||
{{- end }}
|
||||
DTSTAMP:{{ now | dateFormat "20060102T150405Z" }}
|
||||
SUMMARY:{{ .Title }}
|
||||
DESCRIPTION:{{ .Content | plainify | replaceRE "\n" "\\n" | replaceRE "," "\\," }}
|
||||
{{- if .Params.location }}
|
||||
LOCATION:{{ .Params.location | replaceRE "," "\\," }}
|
||||
{{- end }}
|
||||
URL:{{ .Permalink }}
|
||||
{{- if .Params.organizer }}
|
||||
ORGANIZER:{{ .Params.organizer | replaceRE "," "\\," }}
|
||||
{{- end }}
|
||||
{{- if .Params.contact }}
|
||||
CONTACT:{{ .Params.contact | replaceRE "," "\\," }}
|
||||
{{- end }}
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
44
layouts/home.html
Normal file
44
layouts/home.html
Normal file
@ -0,0 +1,44 @@
|
||||
{{ define "main" }}
|
||||
<div class="intro">
|
||||
<p class="prompt">{{ .Site.Params.description | default "Welcome to the underground tech scene." }}</p>
|
||||
</div>
|
||||
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+==================================================================+
|
||||
| UPCOMING EVENTS |
|
||||
+==================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
{{ $futureEvents := where .Site.RegularPages "Section" "events" }}
|
||||
{{ $futureEvents := where $futureEvents "Params.date" "ge" now }}
|
||||
{{ $futureEvents := $futureEvents.ByParam "date" }}
|
||||
|
||||
{{ if $futureEvents }}
|
||||
<ul class="event-list">
|
||||
{{ range $futureEvents }}
|
||||
<li class="event-item">
|
||||
<div class="event-date">{{ .Params.date | dateFormat "Monday, January 2, 2006 at 3:04 PM MST" }}</div>
|
||||
<h3 class="event-title">
|
||||
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
|
||||
</h3>
|
||||
{{ if .Params.location }}
|
||||
<div class="event-location">📍 {{ .Params.location }}</div>
|
||||
{{ end }}
|
||||
{{ if .Params.cost }}
|
||||
<div class="event-cost">💰 {{ .Params.cost }}</div>
|
||||
{{ end }}
|
||||
<div class="event-description">{{ .Summary }}</div>
|
||||
<div class="event-link">
|
||||
<a href="{{ .RelPermalink }}">View Details →</a>
|
||||
</div>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ else }}
|
||||
<div class="no-events">
|
||||
<p class="prompt">No upcoming events found. Check back later for more cyberpunk gatherings!</p>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
76
layouts/single.html
Normal file
76
layouts/single.html
Normal file
@ -0,0 +1,76 @@
|
||||
{{ define "main" }}
|
||||
<article class="event-detail">
|
||||
<div class="ascii-border">
|
||||
+==================================================================+
|
||||
| EVENT DETAILS |
|
||||
+==================================================================+
|
||||
</div>
|
||||
|
||||
<h1>{{ .Title }}</h1>
|
||||
|
||||
<div class="event-meta">
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Date & Time</span>
|
||||
<span class="meta-value">{{ .Params.date | dateFormat "Monday, January 2, 2006 at 3:04 PM" }}</span>
|
||||
</div>
|
||||
|
||||
{{ if .Params.end_date }}
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">End Time</span>
|
||||
<span class="meta-value">{{ .Params.end_date | dateFormat "Monday, January 2, 2006 at 3:04 PM" }}</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.location }}
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Location</span>
|
||||
<span class="meta-value">{{ .Params.location }}</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.organizer }}
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Organizer</span>
|
||||
<span class="meta-value">{{ .Params.organizer }}</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.capacity }}
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Capacity</span>
|
||||
<span class="meta-value">{{ .Params.capacity }} people</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.cost }}
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Cost</span>
|
||||
<span class="meta-value">{{ .Params.cost }}</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<div class="event-content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
|
||||
{{ if .Params.registration_url }}
|
||||
<div class="registration">
|
||||
<div class="ascii-border">
|
||||
+--------------------------------------------------------------+
|
||||
| REGISTRATION |
|
||||
+--------------------------------------------------------------+
|
||||
</div>
|
||||
<p class="prompt"><a href="{{ .Params.registration_url }}">Register for this event</a></p>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.contact }}
|
||||
<div class="contact">
|
||||
<h3>Contact Information</h3>
|
||||
<p>{{ .Params.contact }}</p>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
</article>
|
||||
{{ end }}
|
11
public/categories/feed.xml
Normal file
11
public/categories/feed.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Categories on NERDER.LAND</title>
|
||||
<link>http://localhost:1313/categories/</link>
|
||||
<description>Recent content in Categories on NERDER.LAND</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>en-us</language>
|
||||
<atom:link href="http://localhost:1313/categories/feed.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
230
public/css/style.css
Normal file
230
public/css/style.css
Normal file
@ -0,0 +1,230 @@
|
||||
/* Cyberpunk Console Theme */
|
||||
:root {
|
||||
--neon-green: #00ff41;
|
||||
--neon-blue: #00d4ff;
|
||||
--neon-pink: #ff0080;
|
||||
--dark-bg: #0a0a0a;
|
||||
--console-bg: #000000;
|
||||
--terminal-green: #00ff00;
|
||||
--matrix-green: #41ff00;
|
||||
--grid-color: #333333;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
background: var(--dark-bg);
|
||||
color: var(--neon-green);
|
||||
line-height: 1.6;
|
||||
background-image:
|
||||
linear-gradient(rgba(0, 255, 65, 0.05) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(0, 255, 65, 0.05) 1px, transparent 1px);
|
||||
background-size: 20px 20px;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* Console border effect */
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
border: 2px solid var(--neon-green);
|
||||
border-radius: 5px;
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
box-shadow:
|
||||
0 0 20px var(--neon-green),
|
||||
inset 0 0 20px rgba(0, 255, 65, 0.1);
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
/* Typography */
|
||||
h1 {
|
||||
color: var(--neon-blue);
|
||||
text-shadow: 0 0 10px var(--neon-blue);
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 1rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: var(--neon-pink);
|
||||
text-shadow: 0 0 10px var(--neon-pink);
|
||||
font-size: 1.8rem;
|
||||
margin-bottom: 0.8rem;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
h3 {
|
||||
color: var(--matrix-green);
|
||||
text-shadow: 0 0 8px var(--matrix-green);
|
||||
font-size: 1.4rem;
|
||||
margin-bottom: 0.6rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 1rem;
|
||||
color: var(--neon-green);
|
||||
}
|
||||
|
||||
/* Links */
|
||||
a {
|
||||
color: var(--neon-blue);
|
||||
text-decoration: none;
|
||||
text-shadow: 0 0 5px var(--neon-blue);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: var(--neon-pink);
|
||||
text-shadow: 0 0 10px var(--neon-pink);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Event listing */
|
||||
.event-list {
|
||||
list-style: none;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.event-item {
|
||||
border: 1px solid var(--grid-color);
|
||||
margin-bottom: 1.5rem;
|
||||
padding: 1.5rem;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
border-left: 4px solid var(--neon-green);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.event-item:hover {
|
||||
border-left-color: var(--neon-pink);
|
||||
box-shadow: 0 0 15px rgba(255, 0, 128, 0.3);
|
||||
transform: translateX(5px);
|
||||
}
|
||||
|
||||
.event-date {
|
||||
color: var(--neon-blue);
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.event-title {
|
||||
color: var(--neon-pink);
|
||||
font-size: 1.3rem;
|
||||
margin: 0.5rem 0;
|
||||
text-shadow: 0 0 8px var(--neon-pink);
|
||||
}
|
||||
|
||||
.event-description {
|
||||
color: var(--neon-green);
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
.event-location, .event-cost {
|
||||
color: var(--matrix-green);
|
||||
font-size: 0.9rem;
|
||||
margin: 0.3rem 0;
|
||||
}
|
||||
|
||||
.event-link {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.event-link a {
|
||||
color: var(--neon-blue);
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
border: 1px solid var(--neon-blue);
|
||||
padding: 0.3rem 0.8rem;
|
||||
border-radius: 3px;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.event-link a:hover {
|
||||
background: var(--neon-blue);
|
||||
color: var(--dark-bg);
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
/* Terminal-style prompt */
|
||||
.prompt::before {
|
||||
content: "$ ";
|
||||
color: var(--terminal-green);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* ASCII art borders */
|
||||
.ascii-border {
|
||||
font-family: monospace;
|
||||
color: var(--neon-green);
|
||||
text-align: center;
|
||||
margin: 1rem 0;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
/* Event detail page styles */
|
||||
.event-detail {
|
||||
border: 2px solid var(--neon-blue);
|
||||
padding: 2rem;
|
||||
background: rgba(0, 212, 255, 0.05);
|
||||
}
|
||||
|
||||
.calendar-actions {
|
||||
margin-top: 2rem;
|
||||
padding: 1rem;
|
||||
background: rgba(0, 255, 65, 0.05);
|
||||
border: 1px solid var(--neon-green);
|
||||
}
|
||||
|
||||
.event-meta {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||
gap: 1rem;
|
||||
margin: 1.5rem 0;
|
||||
padding: 1rem;
|
||||
border: 1px solid var(--grid-color);
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.meta-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.meta-label {
|
||||
color: var(--neon-blue);
|
||||
font-size: 0.8rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
margin-bottom: 0.3rem;
|
||||
}
|
||||
|
||||
.meta-value {
|
||||
color: var(--neon-green);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Responsive design */
|
||||
@media (max-width: 768px) {
|
||||
.container {
|
||||
margin: 10px;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.event-meta {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
64
public/events/calendar.ics
Normal file
64
public/events/calendar.ics
Normal file
@ -0,0 +1,64 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//NERDER.LAND//Event Calendar//EN
|
||||
NAME:NERDER.LAND Events
|
||||
X-WR-CALNAME:NERDER.LAND Events
|
||||
DESCRIPTION:Welcome to the underground tech scene. Here you'll find the latest nerdy events in our community.
|
||||
TIMEZONE-ID:America/Denver
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Denver
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0600
|
||||
TZNAME:MDT
|
||||
DTSTART:20250309T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:-0600
|
||||
TZOFFSETTO:-0700
|
||||
TZNAME:MST
|
||||
DTSTART:20251102T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:fba924c3385ccd32bad915fa99f6a2bd@localhost:1313/
|
||||
DTSTART;TZID=America/Denver:20250622T140000
|
||||
DTEND;TZID=America/Denver:20250622T170000
|
||||
DTSTAMP:20250604T132919Z
|
||||
SUMMARY:DIY Electronics Workshop: Build Your Own Gadgets
|
||||
DESCRIPTION:<p>Get your hands dirty with circuits\, sensors\, and microcontrollers! Learn circuit design\, soldering\, and programming while building your own working gadgets to take home.</p>
|
||||
LOCATION:MakerSpace Lab\, 789 Circuit St
|
||||
URL:http://localhost:1313/events/maker-workshop/
|
||||
ORGANIZER:Hardware Hackers Guild
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:93711c4881fb7721f00b4451e4ff7893@localhost:1313/
|
||||
DTSTART;TZID=America/Denver:20250615T090000
|
||||
DTEND;TZID=America/Denver:20250616T180000
|
||||
DTSTAMP:20250604T132919Z
|
||||
SUMMARY:Cyberpunk Hackathon: Code the Future
|
||||
DESCRIPTION:<p>Join us for a 24-hour coding marathon where reality meets the digital underground! Build AR interfaces\, blockchain solutions\, or AI-powered tools in this innovation celebration.</p>
|
||||
LOCATION:TechHub Downtown\, 123 Main St
|
||||
URL:http://localhost:1313/events/cyberpunk-hackathon/
|
||||
ORGANIZER:Local Hackers Collective
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:10125500066f2fe44cd952eadb298a93@localhost:1313/
|
||||
DTSTART;TZID=America/Denver:20250608T190000
|
||||
DTEND;TZID=America/Denver:20250608T230000
|
||||
DTSTAMP:20250604T132919Z
|
||||
SUMMARY:Retro Gaming Night: Pixels & Power-Ups
|
||||
DESCRIPTION:<p>Step back in time to the golden age of gaming! Classic arcade cabinets\, console gaming stations\, tournaments with prizes\, and chiptune DJ sets all night long.</p>
|
||||
LOCATION:Arcade Underground\, 456 Neon Ave
|
||||
URL:http://localhost:1313/events/retro-gaming-night/
|
||||
ORGANIZER:Pixel Pushers Society
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
38
public/events/cyberpunk-hackathon/calendar.ics
Normal file
38
public/events/cyberpunk-hackathon/calendar.ics
Normal file
@ -0,0 +1,38 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//NERDER.LAND//Event Calendar//EN
|
||||
NAME:Cyberpunk Hackathon: Code the Future
|
||||
X-WR-CALNAME:Cyberpunk Hackathon: Code the Future
|
||||
TIMEZONE-ID:America/Denver
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Denver
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0600
|
||||
TZNAME:MDT
|
||||
DTSTART:20250309T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:-0600
|
||||
TZOFFSETTO:-0700
|
||||
TZNAME:MST
|
||||
DTSTART:20251102T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:93711c4881fb7721f00b4451e4ff7893@localhost:1313/
|
||||
DTSTART;TZID=America/Denver:20250615T090000
|
||||
DTEND;TZID=America/Denver:20250616T180000
|
||||
DTSTAMP:20250604T132919Z
|
||||
SUMMARY:Cyberpunk Hackathon: Code the Future
|
||||
DESCRIPTION:Join us for a 24-hour coding marathon where reality meets the digital underground! Build AR interfaces\, blockchain solutions\, or AI-powered tools in this innovation celebration.\nEvent Description Dive into the neon-lit world of cyberpunk as we challenge developers\, designers\, and tech enthusiasts to build applications that push the boundaries of what’s possible. Whether you’re creating AR interfaces\, blockchain solutions\, or AI-powered tools\, this hackathon celebrates the spirit of innovation.\nWhat to Expect 24 hours of non-stop coding Free meals and energy drinks (because sleep is for the weak) Mentorship from industry experts Amazing prizes including hardware\, software licenses\, and crypto rewards Networking with like-minded rebels Categories Best Overall Hack Most Creative Use of AI Blockchain Innovation Cybersecurity Solution UI/UX Design Excellence Requirements Bring your own laptop and charger Form teams of 2-4 people (or go solo if you dare) All skill levels welcome - we’ll have beginner-friendly workshops Get ready to jack in and code the future!\n
|
||||
LOCATION:TechHub Downtown\, 123 Main St
|
||||
URL:http://localhost:1313/events/cyberpunk-hackathon/
|
||||
ORGANIZER:Local Hackers Collective
|
||||
CONTACT:hackathon@nerder.land
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
163
public/events/cyberpunk-hackathon/index.html
Normal file
163
public/events/cyberpunk-hackathon/index.html
Normal file
@ -0,0 +1,163 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us" dir="ltr">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Cyberpunk Hackathon: Code the Future - NERDER.LAND</title>
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" title="NERDER.LAND - All Content" href="http://localhost:1313/feed.xml">
|
||||
<link rel="alternate" type="application/rss+xml" title="NERDER.LAND - Events" href="http://localhost:1313/events/feed.xml">
|
||||
|
||||
|
||||
<link rel="alternate" type="text/calendar" title="NERDER.LAND - Events Calendar" href="http://localhost:1313/events/calendar.ics">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header>
|
||||
|
||||
<h2><a href="/">NERDER.LAND</a></h2>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<article class="event-detail">
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+==================================================================+
|
||||
| EVENT DETAILS |
|
||||
+==================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<h1>Cyberpunk Hackathon: Code the Future</h1>
|
||||
|
||||
<div class="event-meta">
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Date & Time</span>
|
||||
<span class="meta-value">Sunday, June 15, 2025 at 9:00 AM MDT</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">End Time</span>
|
||||
<span class="meta-value">Monday, June 16, 2025 at 6:00 PM MDT</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Timezone</span>
|
||||
<span class="meta-value">Mountain Time (UTC-6)</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Location</span>
|
||||
<span class="meta-value">TechHub Downtown, 123 Main St</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Organizer</span>
|
||||
<span class="meta-value">Local Hackers Collective</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Capacity</span>
|
||||
<span class="meta-value">50 people</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Cost</span>
|
||||
<span class="meta-value">Free</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="event-content">
|
||||
<p>Join us for a 24-hour coding marathon where reality meets the digital underground! Build AR interfaces, blockchain solutions, or AI-powered tools in this innovation celebration.</p>
|
||||
<h2 id="event-description">Event Description</h2>
|
||||
<p>Dive into the neon-lit world of cyberpunk as we challenge developers, designers, and tech enthusiasts to build applications that push the boundaries of what’s possible. Whether you’re creating AR interfaces, blockchain solutions, or AI-powered tools, this hackathon celebrates the spirit of innovation.</p>
|
||||
<h2 id="what-to-expect">What to Expect</h2>
|
||||
<ul>
|
||||
<li><strong>24 hours of non-stop coding</strong></li>
|
||||
<li><strong>Free meals and energy drinks</strong> (because sleep is for the weak)</li>
|
||||
<li><strong>Mentorship from industry experts</strong></li>
|
||||
<li><strong>Amazing prizes</strong> including hardware, software licenses, and crypto rewards</li>
|
||||
<li><strong>Networking with like-minded rebels</strong></li>
|
||||
</ul>
|
||||
<h2 id="categories">Categories</h2>
|
||||
<ul>
|
||||
<li>Best Overall Hack</li>
|
||||
<li>Most Creative Use of AI</li>
|
||||
<li>Blockchain Innovation</li>
|
||||
<li>Cybersecurity Solution</li>
|
||||
<li>UI/UX Design Excellence</li>
|
||||
</ul>
|
||||
<h2 id="requirements">Requirements</h2>
|
||||
<ul>
|
||||
<li>Bring your own laptop and charger</li>
|
||||
<li>Form teams of 2-4 people (or go solo if you dare)</li>
|
||||
<li>All skill levels welcome - we’ll have beginner-friendly workshops</li>
|
||||
</ul>
|
||||
<p>Get ready to jack in and code the future!</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="registration">
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+--------------------------------------------------------------+
|
||||
| REGISTRATION |
|
||||
+--------------------------------------------------------------+
|
||||
</pre>
|
||||
</div>
|
||||
<p class="prompt"><a href="https://example.com/register">Register for this event</a></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="contact">
|
||||
<h3>Contact Information</h3>
|
||||
<p>hackathon@nerder.land</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="calendar-actions">
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+--------------------------------------------------------------+
|
||||
| ADD TO CALENDAR |
|
||||
+--------------------------------------------------------------+
|
||||
</pre>
|
||||
</div>
|
||||
<p class="prompt">
|
||||
<a href="/events/cyberpunk-hackathon/calendar.ics" download>📅 Download Event (.ics)</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
</main>
|
||||
<footer>
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+===================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
<p class="prompt">NERDER.LAND 2025 - Connecting the tech underground</p>
|
||||
<p style="margin-top: 1rem; font-size: 0.8rem;">
|
||||
<a href="http://localhost:1313/events/feed.xml">📡 RSS Feed</a> |
|
||||
<a href="http://localhost:1313/events/calendar.ics">📅 Calendar Subscription</a> |
|
||||
<a href="mailto:events@nerder.land?subject=Event Submission&body=Please include:%0A%0AEvent Name:%0ADate & Time:%0ALocation:%0ADescription:%0AOrganizer:%0AContact Info:%0ACost:%0ARegistration URL (if any):">📧 Submit an Event</a>
|
||||
</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
38
public/events/feed.xml
Normal file
38
public/events/feed.xml
Normal file
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Events on NERDER.LAND</title>
|
||||
<link>http://localhost:1313/events/</link>
|
||||
<description>Welcome to the underground tech scene. Here you'll find the latest nerdy events in our community.</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Sun, 22 Jun 2025 14:00:00 -0600</lastBuildDate><atom:link href="http://localhost:1313/events/feed.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>DIY Electronics Workshop: Build Your Own Gadgets</title>
|
||||
<link>http://localhost:1313/events/maker-workshop/</link>
|
||||
<pubDate>Sun, 22 Jun 2025 14:00:00 -0600</pubDate>
|
||||
|
||||
<guid>http://localhost:1313/events/maker-workshop/</guid>
|
||||
<description>📍 MakerSpace Lab, 789 Circuit St | 🗓️ June 22, 2025 at 2:00 PM MDT | 💰 $25 (includes materials) | <p>Get your hands dirty with circuits, sensors, and microcontrollers! Learn circuit design, soldering, and programming while building your own working gadgets to take home.</p></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Cyberpunk Hackathon: Code the Future</title>
|
||||
<link>http://localhost:1313/events/cyberpunk-hackathon/</link>
|
||||
<pubDate>Sun, 15 Jun 2025 09:00:00 -0600</pubDate>
|
||||
|
||||
<guid>http://localhost:1313/events/cyberpunk-hackathon/</guid>
|
||||
<description>📍 TechHub Downtown, 123 Main St | 🗓️ June 15, 2025 at 9:00 AM MDT | 💰 Free | <p>Join us for a 24-hour coding marathon where reality meets the digital underground! Build AR interfaces, blockchain solutions, or AI-powered tools in this innovation celebration.</p></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Retro Gaming Night: Pixels & Power-Ups</title>
|
||||
<link>http://localhost:1313/events/retro-gaming-night/</link>
|
||||
<pubDate>Sun, 08 Jun 2025 19:00:00 -0600</pubDate>
|
||||
|
||||
<guid>http://localhost:1313/events/retro-gaming-night/</guid>
|
||||
<description>📍 Arcade Underground, 456 Neon Ave | 🗓️ June 8, 2025 at 7:00 PM MDT | 💰 $10 cover charge | <p>Step back in time to the golden age of gaming! Classic arcade cabinets, console gaming stations, tournaments with prizes, and chiptune DJ sets all night long.</p></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
38
public/events/maker-workshop/calendar.ics
Normal file
38
public/events/maker-workshop/calendar.ics
Normal file
@ -0,0 +1,38 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//NERDER.LAND//Event Calendar//EN
|
||||
NAME:DIY Electronics Workshop: Build Your Own Gadgets
|
||||
X-WR-CALNAME:DIY Electronics Workshop: Build Your Own Gadgets
|
||||
TIMEZONE-ID:America/Denver
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Denver
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0600
|
||||
TZNAME:MDT
|
||||
DTSTART:20250309T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:-0600
|
||||
TZOFFSETTO:-0700
|
||||
TZNAME:MST
|
||||
DTSTART:20251102T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:fba924c3385ccd32bad915fa99f6a2bd@localhost:1313/
|
||||
DTSTART;TZID=America/Denver:20250622T140000
|
||||
DTEND;TZID=America/Denver:20250622T170000
|
||||
DTSTAMP:20250604T132919Z
|
||||
SUMMARY:DIY Electronics Workshop: Build Your Own Gadgets
|
||||
DESCRIPTION:Get your hands dirty with circuits\, sensors\, and microcontrollers! Learn circuit design\, soldering\, and programming while building your own working gadgets to take home.\nWorkshop Overview Join us for an afternoon of hands-on electronics where you’ll learn the fundamentals of circuit design and build your own working gadgets to take home.\nWhat You’ll Build Choose from one of these beginner-friendly projects:\nLED Matrix Display - Program patterns and text Motion Sensor Alarm - Detect intruders with style Temperature Monitor - IoT device with wireless connectivity Sound Reactive LEDs - Lights that dance to music What’s Included All electronic components and tools Step-by-step instruction guides Expert mentorship from experienced makers Soldering lessons for beginners Take-home project kit Prerequisites No prior experience required! Bring curiosity and willingness to learn Safety glasses will be provided Skills You’ll Learn Basic circuit design Soldering techniques Microcontroller programming Sensor integration Troubleshooting electronic systems Perfect for beginners looking to break into the world of electronics and making!\n
|
||||
LOCATION:MakerSpace Lab\, 789 Circuit St
|
||||
URL:http://localhost:1313/events/maker-workshop/
|
||||
ORGANIZER:Hardware Hackers Guild
|
||||
CONTACT:makers@nerder.land
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
171
public/events/maker-workshop/index.html
Normal file
171
public/events/maker-workshop/index.html
Normal file
@ -0,0 +1,171 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us" dir="ltr">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>DIY Electronics Workshop: Build Your Own Gadgets - NERDER.LAND</title>
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" title="NERDER.LAND - All Content" href="http://localhost:1313/feed.xml">
|
||||
<link rel="alternate" type="application/rss+xml" title="NERDER.LAND - Events" href="http://localhost:1313/events/feed.xml">
|
||||
|
||||
|
||||
<link rel="alternate" type="text/calendar" title="NERDER.LAND - Events Calendar" href="http://localhost:1313/events/calendar.ics">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header>
|
||||
|
||||
<h2><a href="/">NERDER.LAND</a></h2>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<article class="event-detail">
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+==================================================================+
|
||||
| EVENT DETAILS |
|
||||
+==================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<h1>DIY Electronics Workshop: Build Your Own Gadgets</h1>
|
||||
|
||||
<div class="event-meta">
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Date & Time</span>
|
||||
<span class="meta-value">Sunday, June 22, 2025 at 2:00 PM MDT</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">End Time</span>
|
||||
<span class="meta-value">Sunday, June 22, 2025 at 5:00 PM MDT</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Timezone</span>
|
||||
<span class="meta-value">Mountain Time (UTC-6)</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Location</span>
|
||||
<span class="meta-value">MakerSpace Lab, 789 Circuit St</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Organizer</span>
|
||||
<span class="meta-value">Hardware Hackers Guild</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Capacity</span>
|
||||
<span class="meta-value">15 people</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Cost</span>
|
||||
<span class="meta-value">$25 (includes materials)</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="event-content">
|
||||
<p>Get your hands dirty with circuits, sensors, and microcontrollers! Learn circuit design, soldering, and programming while building your own working gadgets to take home.</p>
|
||||
<h2 id="workshop-overview">Workshop Overview</h2>
|
||||
<p>Join us for an afternoon of hands-on electronics where you’ll learn the fundamentals of circuit design and build your own working gadgets to take home.</p>
|
||||
<h2 id="what-youll-build">What You’ll Build</h2>
|
||||
<p>Choose from one of these beginner-friendly projects:</p>
|
||||
<ul>
|
||||
<li><strong>LED Matrix Display</strong> - Program patterns and text</li>
|
||||
<li><strong>Motion Sensor Alarm</strong> - Detect intruders with style</li>
|
||||
<li><strong>Temperature Monitor</strong> - IoT device with wireless connectivity</li>
|
||||
<li><strong>Sound Reactive LEDs</strong> - Lights that dance to music</li>
|
||||
</ul>
|
||||
<h2 id="whats-included">What’s Included</h2>
|
||||
<ul>
|
||||
<li>All electronic components and tools</li>
|
||||
<li>Step-by-step instruction guides</li>
|
||||
<li>Expert mentorship from experienced makers</li>
|
||||
<li>Soldering lessons for beginners</li>
|
||||
<li>Take-home project kit</li>
|
||||
</ul>
|
||||
<h2 id="prerequisites">Prerequisites</h2>
|
||||
<ul>
|
||||
<li>No prior experience required!</li>
|
||||
<li>Bring curiosity and willingness to learn</li>
|
||||
<li>Safety glasses will be provided</li>
|
||||
</ul>
|
||||
<h2 id="skills-youll-learn">Skills You’ll Learn</h2>
|
||||
<ul>
|
||||
<li>Basic circuit design</li>
|
||||
<li>Soldering techniques</li>
|
||||
<li>Microcontroller programming</li>
|
||||
<li>Sensor integration</li>
|
||||
<li>Troubleshooting electronic systems</li>
|
||||
</ul>
|
||||
<p>Perfect for beginners looking to break into the world of electronics and making!</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="registration">
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+--------------------------------------------------------------+
|
||||
| REGISTRATION |
|
||||
+--------------------------------------------------------------+
|
||||
</pre>
|
||||
</div>
|
||||
<p class="prompt"><a href="https://example.com/maker-register">Register for this event</a></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="contact">
|
||||
<h3>Contact Information</h3>
|
||||
<p>makers@nerder.land</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="calendar-actions">
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+--------------------------------------------------------------+
|
||||
| ADD TO CALENDAR |
|
||||
+--------------------------------------------------------------+
|
||||
</pre>
|
||||
</div>
|
||||
<p class="prompt">
|
||||
<a href="/events/maker-workshop/calendar.ics" download>📅 Download Event (.ics)</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
</main>
|
||||
<footer>
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+===================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
<p class="prompt">NERDER.LAND 2025 - Connecting the tech underground</p>
|
||||
<p style="margin-top: 1rem; font-size: 0.8rem;">
|
||||
<a href="http://localhost:1313/events/feed.xml">📡 RSS Feed</a> |
|
||||
<a href="http://localhost:1313/events/calendar.ics">📅 Calendar Subscription</a> |
|
||||
<a href="mailto:events@nerder.land?subject=Event Submission&body=Please include:%0A%0AEvent Name:%0ADate & Time:%0ALocation:%0ADescription:%0AOrganizer:%0AContact Info:%0ACost:%0ARegistration URL (if any):">📧 Submit an Event</a>
|
||||
</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
38
public/events/retro-gaming-night/calendar.ics
Normal file
38
public/events/retro-gaming-night/calendar.ics
Normal file
@ -0,0 +1,38 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//NERDER.LAND//Event Calendar//EN
|
||||
NAME:Retro Gaming Night: Pixels & Power-Ups
|
||||
X-WR-CALNAME:Retro Gaming Night: Pixels & Power-Ups
|
||||
TIMEZONE-ID:America/Denver
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Denver
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0600
|
||||
TZNAME:MDT
|
||||
DTSTART:20250309T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:-0600
|
||||
TZOFFSETTO:-0700
|
||||
TZNAME:MST
|
||||
DTSTART:20251102T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:10125500066f2fe44cd952eadb298a93@localhost:1313/
|
||||
DTSTART;TZID=America/Denver:20250608T190000
|
||||
DTEND;TZID=America/Denver:20250608T230000
|
||||
DTSTAMP:20250604T132919Z
|
||||
SUMMARY:Retro Gaming Night: Pixels & Power-Ups
|
||||
DESCRIPTION:Step back in time to the golden age of gaming! Classic arcade cabinets\, console gaming stations\, tournaments with prizes\, and chiptune DJ sets all night long.\nEvent Highlights Classic arcade cabinets from the 80s and 90s Console gaming stations with retro systems High score competitions with prizes Chiptune DJ sets all night long Retro snacks and drinks (think Mountain Dew and pizza!) Featured Games Street Fighter II Pac-Man Championship Contra Co-op Challenge Tetris Speed Runs Mario Kart 64 Tournament Tournaments 7:30 PM - Street Fighter II Tournament 8:30 PM - Pac-Man High Score Challenge 9:30 PM - Mario Kart 64 Grand Prix Prizes include vintage gaming memorabilia\, gift cards\, and bragging rights that last forever!\n
|
||||
LOCATION:Arcade Underground\, 456 Neon Ave
|
||||
URL:http://localhost:1313/events/retro-gaming-night/
|
||||
ORGANIZER:Pixel Pushers Society
|
||||
CONTACT:pixels@nerder.land
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
150
public/events/retro-gaming-night/index.html
Normal file
150
public/events/retro-gaming-night/index.html
Normal file
@ -0,0 +1,150 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us" dir="ltr">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Retro Gaming Night: Pixels & Power-Ups - NERDER.LAND</title>
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" title="NERDER.LAND - All Content" href="http://localhost:1313/feed.xml">
|
||||
<link rel="alternate" type="application/rss+xml" title="NERDER.LAND - Events" href="http://localhost:1313/events/feed.xml">
|
||||
|
||||
|
||||
<link rel="alternate" type="text/calendar" title="NERDER.LAND - Events Calendar" href="http://localhost:1313/events/calendar.ics">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header>
|
||||
|
||||
<h2><a href="/">NERDER.LAND</a></h2>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<article class="event-detail">
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+==================================================================+
|
||||
| EVENT DETAILS |
|
||||
+==================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<h1>Retro Gaming Night: Pixels & Power-Ups</h1>
|
||||
|
||||
<div class="event-meta">
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Date & Time</span>
|
||||
<span class="meta-value">Sunday, June 8, 2025 at 7:00 PM MDT</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">End Time</span>
|
||||
<span class="meta-value">Sunday, June 8, 2025 at 11:00 PM MDT</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Timezone</span>
|
||||
<span class="meta-value">Mountain Time (UTC-6)</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Location</span>
|
||||
<span class="meta-value">Arcade Underground, 456 Neon Ave</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Organizer</span>
|
||||
<span class="meta-value">Pixel Pushers Society</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Capacity</span>
|
||||
<span class="meta-value">30 people</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="meta-item">
|
||||
<span class="meta-label">Cost</span>
|
||||
<span class="meta-value">$10 cover charge</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="event-content">
|
||||
<p>Step back in time to the golden age of gaming! Classic arcade cabinets, console gaming stations, tournaments with prizes, and chiptune DJ sets all night long.</p>
|
||||
<h2 id="event-highlights">Event Highlights</h2>
|
||||
<ul>
|
||||
<li><strong>Classic arcade cabinets</strong> from the 80s and 90s</li>
|
||||
<li><strong>Console gaming stations</strong> with retro systems</li>
|
||||
<li><strong>High score competitions</strong> with prizes</li>
|
||||
<li><strong>Chiptune DJ sets</strong> all night long</li>
|
||||
<li><strong>Retro snacks and drinks</strong> (think Mountain Dew and pizza!)</li>
|
||||
</ul>
|
||||
<h2 id="featured-games">Featured Games</h2>
|
||||
<ul>
|
||||
<li>Street Fighter II</li>
|
||||
<li>Pac-Man Championship</li>
|
||||
<li>Contra Co-op Challenge</li>
|
||||
<li>Tetris Speed Runs</li>
|
||||
<li>Mario Kart 64 Tournament</li>
|
||||
</ul>
|
||||
<h2 id="tournaments">Tournaments</h2>
|
||||
<ul>
|
||||
<li>7:30 PM - Street Fighter II Tournament</li>
|
||||
<li>8:30 PM - Pac-Man High Score Challenge</li>
|
||||
<li>9:30 PM - Mario Kart 64 Grand Prix</li>
|
||||
</ul>
|
||||
<p>Prizes include vintage gaming memorabilia, gift cards, and bragging rights that last forever!</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="contact">
|
||||
<h3>Contact Information</h3>
|
||||
<p>pixels@nerder.land</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="calendar-actions">
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+--------------------------------------------------------------+
|
||||
| ADD TO CALENDAR |
|
||||
+--------------------------------------------------------------+
|
||||
</pre>
|
||||
</div>
|
||||
<p class="prompt">
|
||||
<a href="/events/retro-gaming-night/calendar.ics" download>📅 Download Event (.ics)</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
</main>
|
||||
<footer>
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+===================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
<p class="prompt">NERDER.LAND 2025 - Connecting the tech underground</p>
|
||||
<p style="margin-top: 1rem; font-size: 0.8rem;">
|
||||
<a href="http://localhost:1313/events/feed.xml">📡 RSS Feed</a> |
|
||||
<a href="http://localhost:1313/events/calendar.ics">📅 Calendar Subscription</a> |
|
||||
<a href="mailto:events@nerder.land?subject=Event Submission&body=Please include:%0A%0AEvent Name:%0ADate & Time:%0ALocation:%0ADescription:%0AOrganizer:%0AContact Info:%0ACost:%0ARegistration URL (if any):">📧 Submit an Event</a>
|
||||
</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
33
public/feed.xml
Normal file
33
public/feed.xml
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>NERDER.LAND</title>
|
||||
<link>http://localhost:1313/</link>
|
||||
<description>Recent content on NERDER.LAND</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Sun, 22 Jun 2025 14:00:00 -0600</lastBuildDate>
|
||||
<atom:link href="http://localhost:1313/feed.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>DIY Electronics Workshop: Build Your Own Gadgets</title>
|
||||
<link>http://localhost:1313/events/maker-workshop/</link>
|
||||
<pubDate>Sun, 22 Jun 2025 14:00:00 -0600</pubDate>
|
||||
<guid>http://localhost:1313/events/maker-workshop/</guid>
|
||||
<description><p>Get your hands dirty with circuits, sensors, and microcontrollers! Learn circuit design, soldering, and programming while building your own working gadgets to take home.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Cyberpunk Hackathon: Code the Future</title>
|
||||
<link>http://localhost:1313/events/cyberpunk-hackathon/</link>
|
||||
<pubDate>Sun, 15 Jun 2025 09:00:00 -0600</pubDate>
|
||||
<guid>http://localhost:1313/events/cyberpunk-hackathon/</guid>
|
||||
<description><p>Join us for a 24-hour coding marathon where reality meets the digital underground! Build AR interfaces, blockchain solutions, or AI-powered tools in this innovation celebration.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Retro Gaming Night: Pixels & Power-Ups</title>
|
||||
<link>http://localhost:1313/events/retro-gaming-night/</link>
|
||||
<pubDate>Sun, 08 Jun 2025 19:00:00 -0600</pubDate>
|
||||
<guid>http://localhost:1313/events/retro-gaming-night/</guid>
|
||||
<description><p>Step back in time to the golden age of gaming! Classic arcade cabinets, console gaming stations, tournaments with prizes, and chiptune DJ sets all night long.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
120
public/index.html
Normal file
120
public/index.html
Normal file
@ -0,0 +1,120 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us" dir="ltr">
|
||||
<head>
|
||||
<meta name="generator" content="Hugo 0.147.7"><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>NERDER.LAND</title>
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" title="NERDER.LAND - All Content" href="http://localhost:1313/feed.xml">
|
||||
<link rel="alternate" type="application/rss+xml" title="NERDER.LAND - Events" href="http://localhost:1313/events/feed.xml">
|
||||
|
||||
|
||||
<link rel="alternate" type="text/calendar" title="NERDER.LAND - Events Calendar" href="http://localhost:1313/events/calendar.ics">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header>
|
||||
|
||||
<h1>NERDER.LAND</h1>
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+===================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<div class="intro">
|
||||
<p class="prompt">Welcome to the underground tech scene. Here you'll find the latest nerdy events in our community.</p>
|
||||
</div>
|
||||
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+==================================================================+
|
||||
| UPCOMING EVENTS |
|
||||
+==================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul class="event-list">
|
||||
|
||||
<li class="event-item">
|
||||
<div class="event-date">Sunday, June 8, 2025 at 7:00 PM MDT</div>
|
||||
<h3 class="event-title">
|
||||
<a href="/events/retro-gaming-night/">Retro Gaming Night: Pixels & Power-Ups</a>
|
||||
</h3>
|
||||
|
||||
<div class="event-location">📍 Arcade Underground, 456 Neon Ave</div>
|
||||
|
||||
|
||||
<div class="event-cost">💰 $10 cover charge</div>
|
||||
|
||||
<div class="event-description"><p>Step back in time to the golden age of gaming! Classic arcade cabinets, console gaming stations, tournaments with prizes, and chiptune DJ sets all night long.</p></div>
|
||||
<div class="event-link">
|
||||
<a href="/events/retro-gaming-night/">View Details →</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="event-item">
|
||||
<div class="event-date">Sunday, June 15, 2025 at 9:00 AM MDT</div>
|
||||
<h3 class="event-title">
|
||||
<a href="/events/cyberpunk-hackathon/">Cyberpunk Hackathon: Code the Future</a>
|
||||
</h3>
|
||||
|
||||
<div class="event-location">📍 TechHub Downtown, 123 Main St</div>
|
||||
|
||||
|
||||
<div class="event-cost">💰 Free</div>
|
||||
|
||||
<div class="event-description"><p>Join us for a 24-hour coding marathon where reality meets the digital underground! Build AR interfaces, blockchain solutions, or AI-powered tools in this innovation celebration.</p></div>
|
||||
<div class="event-link">
|
||||
<a href="/events/cyberpunk-hackathon/">View Details →</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="event-item">
|
||||
<div class="event-date">Sunday, June 22, 2025 at 2:00 PM MDT</div>
|
||||
<h3 class="event-title">
|
||||
<a href="/events/maker-workshop/">DIY Electronics Workshop: Build Your Own Gadgets</a>
|
||||
</h3>
|
||||
|
||||
<div class="event-location">📍 MakerSpace Lab, 789 Circuit St</div>
|
||||
|
||||
|
||||
<div class="event-cost">💰 $25 (includes materials)</div>
|
||||
|
||||
<div class="event-description"><p>Get your hands dirty with circuits, sensors, and microcontrollers! Learn circuit design, soldering, and programming while building your own working gadgets to take home.</p></div>
|
||||
<div class="event-link">
|
||||
<a href="/events/maker-workshop/">View Details →</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
</main>
|
||||
<footer>
|
||||
<div class="ascii-border">
|
||||
<pre>
|
||||
+===================================================================+
|
||||
</pre>
|
||||
</div>
|
||||
<p class="prompt">NERDER.LAND 2025 - Connecting the tech underground</p>
|
||||
<p style="margin-top: 1rem; font-size: 0.8rem;">
|
||||
<a href="http://localhost:1313/events/feed.xml">📡 RSS Feed</a> |
|
||||
<a href="http://localhost:1313/events/calendar.ics">📅 Calendar Subscription</a> |
|
||||
<a href="mailto:events@nerder.land?subject=Event Submission&body=Please include:%0A%0AEvent Name:%0ADate & Time:%0ALocation:%0ADescription:%0AOrganizer:%0AContact Info:%0ACost:%0ARegistration URL (if any):">📧 Submit an Event</a>
|
||||
</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
24
public/sitemap.xml
Normal file
24
public/sitemap.xml
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
<url>
|
||||
<loc>http://localhost:1313/events/maker-workshop/</loc>
|
||||
<lastmod>2025-06-22T14:00:00-06:00</lastmod>
|
||||
</url><url>
|
||||
<loc>http://localhost:1313/events/</loc>
|
||||
<lastmod>2025-06-22T14:00:00-06:00</lastmod>
|
||||
</url><url>
|
||||
<loc>http://localhost:1313/</loc>
|
||||
<lastmod>2025-06-22T14:00:00-06:00</lastmod>
|
||||
</url><url>
|
||||
<loc>http://localhost:1313/events/cyberpunk-hackathon/</loc>
|
||||
<lastmod>2025-06-15T09:00:00-06:00</lastmod>
|
||||
</url><url>
|
||||
<loc>http://localhost:1313/events/retro-gaming-night/</loc>
|
||||
<lastmod>2025-06-08T19:00:00-06:00</lastmod>
|
||||
</url><url>
|
||||
<loc>http://localhost:1313/categories/</loc>
|
||||
</url><url>
|
||||
<loc>http://localhost:1313/tags/</loc>
|
||||
</url>
|
||||
</urlset>
|
11
public/tags/feed.xml
Normal file
11
public/tags/feed.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Tags on NERDER.LAND</title>
|
||||
<link>http://localhost:1313/tags/</link>
|
||||
<description>Recent content in Tags on NERDER.LAND</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>en-us</language>
|
||||
<atom:link href="http://localhost:1313/tags/feed.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
230
static/css/style.css
Normal file
230
static/css/style.css
Normal file
@ -0,0 +1,230 @@
|
||||
/* Cyberpunk Console Theme */
|
||||
:root {
|
||||
--neon-green: #00ff41;
|
||||
--neon-blue: #00d4ff;
|
||||
--neon-pink: #ff0080;
|
||||
--dark-bg: #0a0a0a;
|
||||
--console-bg: #000000;
|
||||
--terminal-green: #00ff00;
|
||||
--matrix-green: #41ff00;
|
||||
--grid-color: #333333;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Courier New', monospace;
|
||||
background: var(--dark-bg);
|
||||
color: var(--neon-green);
|
||||
line-height: 1.6;
|
||||
background-image:
|
||||
linear-gradient(rgba(0, 255, 65, 0.05) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(0, 255, 65, 0.05) 1px, transparent 1px);
|
||||
background-size: 20px 20px;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* Console border effect */
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
border: 2px solid var(--neon-green);
|
||||
border-radius: 5px;
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
box-shadow:
|
||||
0 0 20px var(--neon-green),
|
||||
inset 0 0 20px rgba(0, 255, 65, 0.1);
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
/* Typography */
|
||||
h1 {
|
||||
color: var(--neon-blue);
|
||||
text-shadow: 0 0 10px var(--neon-blue);
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 1rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: var(--neon-pink);
|
||||
text-shadow: 0 0 10px var(--neon-pink);
|
||||
font-size: 1.8rem;
|
||||
margin-bottom: 0.8rem;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
h3 {
|
||||
color: var(--matrix-green);
|
||||
text-shadow: 0 0 8px var(--matrix-green);
|
||||
font-size: 1.4rem;
|
||||
margin-bottom: 0.6rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 1rem;
|
||||
color: var(--neon-green);
|
||||
}
|
||||
|
||||
/* Links */
|
||||
a {
|
||||
color: var(--neon-blue);
|
||||
text-decoration: none;
|
||||
text-shadow: 0 0 5px var(--neon-blue);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: var(--neon-pink);
|
||||
text-shadow: 0 0 10px var(--neon-pink);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Event listing */
|
||||
.event-list {
|
||||
list-style: none;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.event-item {
|
||||
border: 1px solid var(--grid-color);
|
||||
margin-bottom: 1.5rem;
|
||||
padding: 1.5rem;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
border-left: 4px solid var(--neon-green);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.event-item:hover {
|
||||
border-left-color: var(--neon-pink);
|
||||
box-shadow: 0 0 15px rgba(255, 0, 128, 0.3);
|
||||
transform: translateX(5px);
|
||||
}
|
||||
|
||||
.event-date {
|
||||
color: var(--neon-blue);
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.event-title {
|
||||
color: var(--neon-pink);
|
||||
font-size: 1.3rem;
|
||||
margin: 0.5rem 0;
|
||||
text-shadow: 0 0 8px var(--neon-pink);
|
||||
}
|
||||
|
||||
.event-description {
|
||||
color: var(--neon-green);
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
.event-location, .event-cost {
|
||||
color: var(--matrix-green);
|
||||
font-size: 0.9rem;
|
||||
margin: 0.3rem 0;
|
||||
}
|
||||
|
||||
.event-link {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.event-link a {
|
||||
color: var(--neon-blue);
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
border: 1px solid var(--neon-blue);
|
||||
padding: 0.3rem 0.8rem;
|
||||
border-radius: 3px;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.event-link a:hover {
|
||||
background: var(--neon-blue);
|
||||
color: var(--dark-bg);
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
/* Terminal-style prompt */
|
||||
.prompt::before {
|
||||
content: "$ ";
|
||||
color: var(--terminal-green);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* ASCII art borders */
|
||||
.ascii-border {
|
||||
font-family: monospace;
|
||||
color: var(--neon-green);
|
||||
text-align: center;
|
||||
margin: 1rem 0;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
/* Event detail page styles */
|
||||
.event-detail {
|
||||
border: 2px solid var(--neon-blue);
|
||||
padding: 2rem;
|
||||
background: rgba(0, 212, 255, 0.05);
|
||||
}
|
||||
|
||||
.calendar-actions {
|
||||
margin-top: 2rem;
|
||||
padding: 1rem;
|
||||
background: rgba(0, 255, 65, 0.05);
|
||||
border: 1px solid var(--neon-green);
|
||||
}
|
||||
|
||||
.event-meta {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||
gap: 1rem;
|
||||
margin: 1.5rem 0;
|
||||
padding: 1rem;
|
||||
border: 1px solid var(--grid-color);
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.meta-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.meta-label {
|
||||
color: var(--neon-blue);
|
||||
font-size: 0.8rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
margin-bottom: 0.3rem;
|
||||
}
|
||||
|
||||
.meta-value {
|
||||
color: var(--neon-green);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Responsive design */
|
||||
@media (max-width: 768px) {
|
||||
.container {
|
||||
margin: 10px;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.event-meta {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user