A Next.js 15 application for district-level commerce and marketing automation.
LocalPulse District Growth Web is a modern web application built with Next.js 15, TypeScript, and Tailwind CSS. It provides real-time data-driven insights and action recommendations for local businesses and district associations.
- Real-time Signal Monitoring: Displays current traffic capacity and environmental conditions
- Smart Action Recommendations: AI-powered suggestions for timely business actions
- ROI Tracking: Monitor the effectiveness of implemented actions
- QR Code Generation: Create printable promotional materials
- Demo Presets: Quick-start scenarios for different weather and traffic conditions
localpulse/
├── apps/
│ └── district-growth-web/ # Next.js 15 web application
├── packages/
│ ├── types/ # Shared TypeScript types
│ ├── api-client/ # API client with fetch wrappers
│ ├── ui-shared/ # Reusable React components
│ ├── config/ # Shared configuration
│ └── qr-kit/ # QR code generation utilities
├── tools/
│ └── openapi-gen.mjs # OpenAPI type generation
└── tests/
└── e2e/ # End-to-end tests
- Framework: Next.js 15 with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- Package Manager: pnpm with workspaces
- Build Tool: Turborepo
- Testing: Vitest (unit), Playwright (E2E)
- Linting: ESLint + Prettier
- Node.js 18+
- pnpm 9+
- Python 3.11+ (for API)
# Install dependencies
pnpm install
# Generate types from OpenAPI spec
pnpm types:gen
# Start development servers
pnpm dev# Start both API and web servers
pnpm dev
# Start only web server
pnpm dev:web
# Start only API server
pnpm dev:api# Build all packages and applications
pnpm build
# Build specific package
pnpm --filter @localpulse/ui-shared build# Run all tests
pnpm test
# Run unit tests only
pnpm test:unit
# Run E2E tests only
pnpm test:e2e
# Run tests with UI
pnpm test:ui# Check code style
pnpm lint
# Fix auto-fixable issues
pnpm lint:fix
# Check formatting
pnpm format:check
# Format code
pnpm formatShared TypeScript types for the entire monorepo, including:
- API response types
- UI component props
- Domain models
Fetch wrapper with:
- Timeout handling
- Exponential backoff retry
- Runtime validation
- Demo data fallback
Headless React components:
SignalMeter- Traffic capacity displayReasonBadge- Trigger reason indicatorsActionCard- Action recommendation tilesRoiLamp- Feedback countdown timerQrPoster- Printable QR code generation
Shared configuration:
- API base URLs
- Request timeouts
- Environment-specific settings
QR code utilities:
- SVG-based QR generation
- Short link creation
- Print-ready layouts
Main dashboard showing:
- Current signal meter
- Top 3 action recommendations
- Health status indicator
Interactive demo with presets:
- Rain now scenario
- School dismissal scenario
- Closing hour scenario
Pricing tiers for different organization sizes:
- Starter (4 triggers)
- Pro (12 triggers)
- District (10 stores)
Information for DOOH/CMS operators:
- Integration options
- Revenue sharing details
- Technical specifications
Value proposition for district associations:
- Success stories
- Implementation features
- Performance metrics
Dynamic case study pages:
ximen-rain- Rainy day success storyschool-dismissal- After-school program results
- Component rendering tests
- Props validation
- Accessibility compliance
- Snapshot testing
- Critical user flows
- Cross-browser compatibility
- Mobile responsiveness
- API integration
The application is designed to be deployed to Vercel, Netlify, or any Node.js hosting platform.
NEXT_PUBLIC_API_URL=http://127.0.0.1:8000- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
MIT License - see LICENSE file for details.