This project is in active development and is being made public to showcase the development process, receive feedback, and invite collaboration.
The web interface and features are under active construction. Expect frequent changes, incomplete features, and evolving documentation. If you are interested in the project, feel free to watch, star, or contribute!
Nightreign Router is an interactive map and route planning tool for Elden Ring: Nightreign, designed to help players optimize their strategies across all 320 unique map patterns. This project is a fan-made, educational initiative and is not affiliated with, endorsed by, or sponsored by FromSoftware or Bandai Namco. All game content and assets are Β© FromSoftware and Bandai Namco. This project is and will always remain non-commercial.
- T3 Stack Setup: Next.js 15, TypeScript, Prisma, tRPC, Tailwind CSS
- Database Integration: Supabase (PostgreSQL) with Prisma ORM
- Type Safety: Comprehensive TypeScript interfaces for game mechanics
- Responsive Design: Mobile-first layout with desktop/mobile responsive behavior
- Interactive Canvas: React-Konva implementation with zoom/pan controls
- Dynamic POI System: Real-time POI rendering based on layout data
- Pattern Data Integration: All 320 map patterns loaded from JSON files
- Coordinate System: Master POI coordinate mapping with layout-specific overlays
- Asset Pipeline: Extracted game assets (map tiles, POI icons) with WebP optimization
- tRPC API: Type-safe API endpoints for pattern and POI data
- Dynamic POI Loading: Real-time POI generation based on layout specifications
- Layout System: Support for different map layouts (Default, Mountaintop, Crater, Rotted Woods, Noklateo)
- Boss Integration: Comprehensive boss data with categories and mechanics
- Responsive Layout: Desktop (25/75 split) and mobile (overlay) layouts
- Dark Theme: Elden Ring-inspired dark theme with custom CSS variables
- Icon Toggles: Category-based POI visibility controls
- Layout Selector: Pattern switching with layout information display
- POI Selection: Click/tap handlers for landmark interaction
- Tooltips/Popovers: Hover information for POI details
- Landmark Details: Sidebar integration for selected POI information
- Timer System: 14-minute day cycle implementation
- Circle Phase Tracking: Visual representation of shrinking circles
- Route Planning: Pathfinding algorithm development
- Route Optimization: Algorithm for optimal path calculation
- Nightlord-Specific Logic: Unique mechanics for each Nightlord
- Loading States: Comprehensive loading and error boundaries
- Performance Optimization: Code splitting and asset optimization
- Accessibility: ARIA labels and keyboard navigation
- SEO: Metadata and structured data implementation
- Framework: Next.js 15 with App Router
- UI Library: React 19 with TypeScript
- Canvas Rendering: React-Konva for interactive map display
- Styling: Tailwind CSS 4 with custom Elden Ring theme
- State Management: React Query with tRPC for server state
- API: tRPC with type-safe procedures
- Database: Supabase (PostgreSQL) with Prisma ORM
- Data Processing: Dynamic POI generation from layout specifications
- File System: JSON-based pattern data with coordinate mapping
- 320 Map Patterns: Complete pattern data with boss information
- POI System: 200+ Points of Interest with coordinate mapping
- Boss Categories: Nightlords, Evergaols, Field Bosses, Night Bosses, Arena Bosses
- Layout Variants: 5 different map layouts with shifting earth events
- Node.js 18+
- npm or yarn
- Supabase account (for database)
-
Clone the repository
git clone https://github.com/NikVince/nightreign-map-router.git cd nightreign-map-router
-
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local
Add your Supabase database URL to
.env.local
-
Set up the database
npm run db:push npm run db:seed
-
Start the development server
npm run dev
npm run dev
- Start development servernpm run build
- Build for productionnpm run lint
- Run ESLintnpm run typecheck
- Run TypeScript checksnpm run db:studio
- Open Prisma Studionpm run generate:poi-ids
- Generate POI ID mappings
nightreign-map-router/
βββ src/
β βββ app/ # Next.js App Router
β β βββ _components/ # React components
β β β βββ MapCanvas.tsx # Interactive map rendering
β β β βββ Sidebar.tsx # Objectives and controls
β β β βββ MainPanel.tsx # Main layout component
β β βββ api/ # API routes
β βββ server/ # Backend logic
β β βββ api/routers/ # tRPC routers
β βββ types/ # TypeScript definitions
β βββ utils/ # Utility functions
β βββ trpc/ # tRPC configuration
βββ reference_material/ # Game data and assets
β βββ pattern_layouts/ # 320 JSON pattern files
β βββ *.md # Game mechanics documentation
βββ docs/ # Project documentation
βββ prisma/ # Database schema and migrations
βββ public/assets/ # Static assets and map tiles
This project uses Supabase as the managed PostgreSQL database solution. All backend data is stored and accessed via Supabase, which provides a scalable and developer-friendly Postgres environment. You can use the Supabase dashboard to manage your database, authentication, and storage.
If you are migrating from another database (e.g., Planetscale, MySQL), please update your .env
file with the Supabase PostgreSQL connection string. See the Supabase docs for more details.
Comprehensive documentation is available in the /docs
directory:
- PROJECT_OVERVIEW.md: Project vision and goals
- GAME_MECHANICS.md: Nightreign mechanics and timing
- DEVELOPMENT_GUIDELINES.md: Core development philosophy
- IMPLEMENTATION_PHASES.md: Development roadmap
- DEVELOPMENT_CHECKLIST.md: Progress tracking
- TECH_STACK.md: Technology stack details
- POI_COORDINATE_ASSIGNMENT.md: POI coordinate system
- DYNAMIC_POI_LOADING_IMPLEMENTATION.md: Dynamic POI system
Contributions, feedback, and suggestions are welcome! If you notice issues, have ideas, or want to help, please open an issue or pull request. See /docs/DEVELOPMENT_GUIDELINES.md
for more information on contributing.
- TypeScript Strict: All code must pass strict type checking
- Asset-First Approach: Prioritize official game assets over placeholders
- Game Accuracy: All mechanics must reflect actual Nightreign behavior
- Incremental Development: Break complex features into testable components
- Performance Focus: Optimize for mobile devices and sub-3s load times
This is a fan project created for educational and non-commercial purposes only. Nightreign Router is not affiliated with, endorsed by, or sponsored by FromSoftware or Bandai Namco. All referenced game content, names, and assets are Β© FromSoftware and Bandai Namco. No assets or code from this project may be used for commercial purposes.
Special thanks to thefifthmatt for his excellent CSV file compiling all the data related to map patterns. This resource was integral to the development of this project. You can find his work and more at: https://thefifthmatt.github.io/nightreign/
This project is licensed under the MIT License.