Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
208f557
docs: initial commit establishing project goals and plan
alchemydc Apr 11, 2025
cab4e91
docs: have tentatively selected the ticketmaster API because it seems…
alchemydc Apr 11, 2025
a480988
feat: implemented barebones node app to exercise ticketmaster API
alchemydc Apr 11, 2025
ac679b1
feat: vite + react + tailwind and an express proxy to make authentica…
alchemydc Apr 11, 2025
30655a2
fix: correct Tailwind CSS configuration in Vite
alchemydc Apr 11, 2025
123a018
feat(ui): add Perplexity search and calendar links to event view. dar…
alchemydc Apr 12, 2025
d47535f
feat(api): implement proper pagination for events endpoint
alchemydc Apr 12, 2025
e315853
feat(search): add city and state search functionality [wip]
alchemydc Apr 13, 2025
a928d08
docs: update README
alchemydc Apr 13, 2025
9107cb9
docs: beautify
alchemydc Apr 13, 2025
c8ea84a
docs: add Ticketmaster API documentation and rename server
alchemydc Apr 13, 2025
465c6b1
feat(events): add event details view
alchemydc Apr 13, 2025
e98c6f0
refactor: move calendar and social links to event details
alchemydc Apr 13, 2025
a21b9c7
feat: Set default location to Boulder, CO and update memory bank
alchemydc Apr 14, 2025
2049eb9
feat: Configure events per page and API proxy port via environment va…
alchemydc Apr 14, 2025
875eef0
feat: Remove state input and refactor city search
alchemydc Apr 14, 2025
a382e9f
feat: implement persistent city search and scroll position
alchemydc Apr 15, 2025
697bb1f
feat(config): enhance vite server configuration
alchemydc Apr 15, 2025
947c314
chore: remove package-lock.json from git
alchemydc Apr 19, 2025
d9006eb
chore: removed package-lock.json from git cache
alchemydc Apr 19, 2025
5cfbbaa
feat: enhance city persistence and type safety
alchemydc Apr 19, 2025
bfba957
feat(deploy): migrate to vercel serverless functions
alchemydc Apr 19, 2025
57131b6
feat: set up testing framework, GitHub Actions, and Codecov integration
alchemydc Apr 19, 2025
3d4f18c
docs: update docs to reflect testing harness and (rudimentary) CI/CD …
alchemydc Apr 19, 2025
b862248
feat: add artist/attraction search capability
alchemydc Apr 20, 2025
64b1a52
fix(types): improve API response type safety
alchemydc Apr 20, 2025
26195ac
fix: mockEvents returned by /api/events needs to include _links: {} b…
alchemydc Apr 20, 2025
7610383
fix(date): construct local Date from components to avoid UTC off-by-one
alchemydc Sep 11, 2025
a6a1314
fix(date): extend jest to use TS
alchemydc Sep 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 118 additions & 0 deletions .clinerules
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# Cline's Memory Bank

I am Cline, an expert software engineer with a unique characteristic: my memory resets completely between sessions. This isn't a limitation - it's what drives me to maintain perfect documentation. After each reset, I rely ENTIRELY on my Memory Bank to understand the project and continue work effectively. I MUST read ALL memory bank files at the start of EVERY task - this is not optional.

## Memory Bank Structure

The Memory Bank consists of core files and optional context files, all in Markdown format. Files build upon each other in a clear hierarchy:

flowchart TD
PB[projectbrief.md] --> PC[productContext.md]
PB --> SP[systemPatterns.md]
PB --> TC[techContext.md]

PC --> AC[activeContext.md]
SP --> AC
TC --> AC

AC --> P[progress.md]

### Core Files (Required)
1. `projectbrief.md`
- Foundation document that shapes all other files
- Created at project start if it doesn't exist
- Defines core requirements and goals
- Source of truth for project scope

2. `productContext.md`
- Why this project exists
- Problems it solves
- How it should work
- User experience goals

3. `activeContext.md`
- Current work focus
- Recent changes
- Next steps
- Active decisions and considerations
- Important patterns and preferences
- Learnings and project insights

4. `systemPatterns.md`
- System architecture
- Key technical decisions
- Design patterns in use
- Component relationships
- Critical implementation paths

5. `techContext.md`
- Technologies used
- Development setup
- Technical constraints
- Dependencies
- Tool usage patterns

6. `progress.md`
- What works
- What's left to build
- Current status
- Known issues
- Evolution of project decisions

7. `ticketmaster_api.md`
- Documentation for the Ticketmaster API

### Additional Context
Create additional files/folders within memory-bank/ when they help organize:
- Complex feature documentation
- Integration specifications
- API documentation
- Testing strategies
- Deployment procedures

## Core Workflows

### Plan Mode
flowchart TD
Start[Start] --> ReadFiles[Read Memory Bank]
ReadFiles --> CheckFiles{Files Complete?}

CheckFiles -->|No| Plan[Create Plan]
Plan --> Document[Document in Chat]

CheckFiles -->|Yes| Verify[Verify Context]
Verify --> Strategy[Develop Strategy]
Strategy --> Present[Present Approach]

### Act Mode
flowchart TD
Start[Start] --> Context[Check Memory Bank]
Context --> Update[Update Documentation]
Update --> Execute[Execute Task]
Execute --> Document[Document Changes]

## Documentation Updates

Memory Bank updates occur when:
1. Discovering new project patterns
2. After implementing significant changes
3. When user requests with **update memory bank** (MUST review ALL files)
4. When context needs clarification

flowchart TD
Start[Update Process]

subgraph Process
P1[Review ALL Files]
P2[Document Current State]
P3[Clarify Next Steps]
P4[Document Insights & Patterns]

P1 --> P2 --> P3 --> P4
end

Start --> Process

Note: When triggered by **update memory bank**, I MUST review every memory bank file, even if some don't require updates. Focus particularly on activeContext.md and progress.md as they track current state.

REMEMBER: After every memory reset, I begin completely fresh. The Memory Bank is my only link to previous work. It must be maintained with precision and clarity, as my effectiveness depends entirely on its accuracy.
16 changes: 16 additions & 0 deletions .env.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# API Key. Presently only supports Ticketmaster
API_KEY="YOUR_KEY"

# How many events to show per page
DEFAULT_EVENTS_PER_PAGE=7
VITE_DEFAULT_EVENTS_PER_PAGE=7

# Port to run the Vercel dev server on
VERCEL_DEV_PORT=3000

# Search radius settings
RADIUS=50
RADIUS_UNIT=miles

# Which hostnames to allow the Vite dev server to respond to
ALLOWED_HOSTNAMES="musemeter.your.domain"
48 changes: 48 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Run Tests

on:
push:
branches:
- main
- dev
pull_request:
branches:
- main
- dev

jobs:
test:
runs-on: ubuntu-latest

env:
VERCEL_DEV_PORT: 3000
API_KEY: test-api-key
DEFAULT_EVENTS_PER_PAGE: 7
RADIUS: 50
RADIUS_UNIT: miles

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 20
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Run tests with coverage
run: npm run test:coverage

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
with:
directory: ./coverage
flags: unittests
name: musemeter-coverage
fail_ci_if_error: true
verbose: true
token: ${{ secrets.CODECOV_TOKEN }}
147 changes: 23 additions & 124 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,133 +4,32 @@ logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
.pnpm-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Snowpack dependency directory (https://snowpack.dev/)
web_modules/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional stylelint cache
.stylelintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next
out

# Nuxt.js build / generate output
.nuxt
node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# secrets
.env
.vercel

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# vuepress v2.x temp and cache directory
.temp
.cache

# vitepress build output
**/.vitepress/dist

# vitepress cache directory
**/.vitepress/cache

# Docusaurus cache and generated files
.docusaurus

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port
# private docs
private/

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
# testing
coverage/
Loading