Skip to content

zZWinterZz/the-dead-web

Repository files navigation

The Dead Web

A Django-powered zombie survival game. Survive, explore, scavenge, and compete in a post-apocalyptic world.

🚀 Getting Started
  1. Clone the repository

    git clone https://github.com/zZWinterZz/the-dead-web.git
    cd the-dead-web
    
  2. Install dependencies

    pip install -r requirements.txt
    
  3. Set up environment

    • Copy .env.example to .env and configure your secrets.
  4. Apply migrations

    python manage.py migrate
    
  5. Create a superuser

    python manage.py createsuperuser
    
  6. Collect static files

    python manage.py collectstatic
    
  7. Run the server

    python manage.py runserver
    
🧩 Project Structure
  • accounts/ - Player profiles, authentication, inventory
  • core/ - Core settings, context processors, utilities
  • gameplay/ - Game logic, travel, encounters
  • stats/ - Leaderboards, player stats
  • world/ - Locations, survivor base, models
  • static/ - CSS, JS, images, favicons
  • templates/ - HTML templates for all pages
🎮 Game Features
  • Custom authentication and character creation
  • Survivor base with storage, repair, rest, and crafting (coming soon)
  • Inventory management and equipment
  • World map with travel and location discovery
  • Scavenging containers for loot
  • Energy, health, and ammo management
  • Leaderboards and player stats
  • Dark themed UI with sidebar navigation
🖼️ Assets & Favicons
  • Favicons are located in static/images/favicon/
  • Referenced in base.html using Django {% static %} tags
🖼️ Wireframes & Design Mockups

Below are the key wireframes used to guide the UI/UX design for The Dead Web:

  • Splash Screen: Splash Screen
  • Login Page: Login Page
  • Character Creation: Character Creation
  • Main UI Layout: Main UI Wireframe

These wireframes informed the layout, navigation, and user experience throughout the project.

🛠️ Development & Customization
  • Agile Methodology:
    • Project planned and tracked using an Agile tool (e.g., GitHub Projects/Issues).
    • User stories documented and linked to project goals.
  • UX Design:
    • Wireframes and mockups guided the design process.
    • Responsive layout using Bootstrap, Flexbox, and media queries.
    • Semantic HTML and accessible design (WCAG compliance).
  • Database:
    • Custom Django models for locations, items, inventory, and player profiles.
    • Relationships and constraints ensure data integrity.
    • Migrations used for schema changes and version control.
  • Code Quality:
    • Custom Python logic with clear if-else conditions and loops.
    • Consistent naming, indentation, and PEP 8 compliance.
    • Comments and docstrings explain complex logic.
  • CRUD Functionality:
    • Users can create, read, update, and delete records (e.g., inventory, character, locations).
    • Secure access controls for CRUD operations.
  • Notifications:
    • Users receive notifications for key data changes (e.g., item found, health changes).
  • Forms & Validation:
    • Forms for creating/editing models with validation and user-friendly error messages.
🔒 Authentication & Authorization
  • Role-Based Login & Registration:
    • Secure login and registration for users and admins.
    • Permissions and access control based on user roles.
  • Login State Reflection:
    • Current login state shown on all pages (avatar, logout button, etc.).
    • Conditional rendering based on login state and role.
  • Access Control:
    • Restricted content and functionality for unauthorized users.
    • Clear error messages and redirects for access attempts.
📚 How to Play
  • Survive by managing health, energy, and ammo
  • Explore new locations and discover secrets
  • Scavenge containers for loot and supplies
  • Equip and upgrade gear (repair/craft coming soon)
  • Rest at the Survivor Base to recover and refresh loot
  • Compete on the leaderboard for longest survival
🧪 Testing
  • Python Tests:
    • Manual and automated test cases for core features (models, views, forms).
    • Test results documented with pass/fail status and coverage metrics.
  • JavaScript Tests:
    • Manual/automated tests for JS modules (if applicable).
  • Testing Documentation:
    • README summarizes testing approach, cases, and results.
🧪 Automated Test Results & Planned Fixes

Test Results (as of Oct 13, 2025):

  • Ran 34 tests across accounts, core, world, and stats apps.
  • Most tests passed.
  • Failures/Errors:
    • accounts.tests.AccountsViewTest.test_profile_view: Template missing (accounts/profile.html).
    • core.tests.GameLogicTests.test_attempt_zombie_encounter_failure & test_handle_player_death: TypeError due to MagicMock usage; real model instances needed for DB logic.
    • core.tests.RestAndEquipmentTests.test_equip_and_unequip: AttributeError, wrong equipment field name (melee vs melee_weapon).
    • accounts.tests.InventoryManagementTests.test_store_item_to_base: Item not stored; test setup/location logic needs review.
    • accounts.tests.PlayerModelTest.test_default_values: Model default for ammo is 20, not 0; update test expectation.
    • stats.tests.AccessControlTests.test_player_required_mixin_redirects: Expected 302 redirect, got 404; check URL/view registration.
    • stats.tests.NotificationTests.test_error_message_on_invalid_travel & test_success_message_on_travel: Expected 302, got 404; check endpoint and test setup.
    • stats.tests.StatsAndLeaderboardTests.test_player_stats_view: Expected 200, got 404; check /stats/player/ URL and test setup.

Planned Fixes:

  • Create missing template: templates/accounts/profile.html.
  • Use real model instances in tests instead of MagicMock for DB interactions.
  • Update equipment logic/tests to use correct field names (e.g., melee_weapon).
  • Ensure test player is at correct location for base inventory tests.
  • Update test expectations to match model defaults (e.g., ammo=20).
  • Review and register missing URLs/views for stats and gameplay endpoints.
  • Adjust test setup for travel and notification tests to match expected view logic.

Coverage:

  • Models, views, user actions, access control, notifications, stats, leaderboard, inventory, equipment, and game logic are covered.
  • Additional coverage for forms, edge cases, and signals recommended if features exist.
🔗 Useful Commands
  • python manage.py migrate — Apply database migrations
  • python manage.py collectstatic — Gather static files
  • python manage.py runserver — Start development server
📦 Deployment
  • Cloud Deployment:
    • Deployed to Heroku/Render or similar cloud platform.
    • Deployed version matches development version in functionality.
  • Deployment Documentation:
    • Step-by-step instructions for setup and deployment included.
  • Security:
    • No passwords or sensitive info in repo.
    • Environment variables and .gitignore used for secrets.
    • DEBUG mode off in production.
📝 License

MIT License. See LICENSE for details.

🧠 AI Tool Usage & Reflection
  • AI for Code Creation:
    • GitHub Copilot and other AI tools used to generate code aligned with project objectives.
    • Reflection: AI accelerated development, especially for boilerplate and repetitive tasks.
  • AI for Debugging:
    • AI tools helped identify and resolve bugs quickly.
    • Reflection: Faster troubleshooting and fewer blockers.
  • AI for Optimization:
    • AI suggested performance and UX improvements.
    • Reflection: Enhanced user experience and code efficiency.
  • AI for Testing:
    • Copilot generated Django unit tests for key features.
    • Reflection: Adjusted and reviewed AI-generated tests for accuracy and coverage.
  • Overall Impact:
    • AI tools improved workflow efficiency and project outcomes.
    • Focused on results, not detailed prompt documentation.
📊 Entity Relationship Diagram (ERD)

Below is the ERD for The Dead Web, visualizing the relationships between core models:

Entity Relationship Diagram

This diagram shows how users, players, inventory, equipment, stats, locations, containers, and items are connected throughout the game.

📈 Lighthouse Testing Results

Lighthouse is an automated tool for improving the quality of web pages. It audits performance, accessibility, best practices, and SEO. Below are the results for The Dead Web:

Base Page (lighthousebase):

  • Performance: 98
  • Accessibility: 93
  • Best Practices: 100
  • SEO: 80

Lighthouse Base Results

Location Page (lighthouselocation):

  • Performance: 85
  • Accessibility: 82
  • Best Practices: 96
  • SEO: 80

Lighthouse Location Results

The location page is the most resource-heavy in the app, due to dynamic map rendering, inventory updates, and real-time game logic. This results in slightly lower performance and accessibility scores compared to the base page, but all scores remain high and above industry standards.

These results demonstrate a strong commitment to web quality, user experience, and technical best practices.

🔧 CRUD Functionality (Core Game Features)
  • Item & Inventory Management (including Base Storage):
    • Create: Players add items to their inventory by looting containers, scavenging, or receiving starter items on character creation. Items can also be transferred to base storage for long-term safekeeping.
    • Read: Inventory and base storage are displayed in the sidebar and dedicated inventory/base storage pages, showing all items, quantities, and conditions.
    • Update: Players use, equip, transfer, or repair items, which updates item quantity, condition, or equipment slot. Items can be moved between inventory and base storage, updating their location and quantity.
    • Delete: Items are removed from inventory or base storage when dropped, consumed, or lost on character death.
  • Location & Container Population:
    • Create: New containers and loot are generated when players explore new locations or when the game day advances.
    • Read: Players view available containers and loot in each location, with details shown in the UI.
    • Update: Loot status and container contents are updated as players scavenge, take items, or as the game state changes.
    • Delete: Loot and container contents are reset or cleared when players rest at the Survivor Base or when a character is deleted (hardcore mode).
  • Reset Functionality:
    • Resting at the Survivor Base or character deletion triggers a reset of loot, containers, inventory, and base storage, ensuring a fresh game state and progression.

These CRUD operations are central to gameplay, supporting dynamic inventory, base storage, location exploration, and survival mechanics.

📅 Agile Workflow & Project Management
  • Commits Overview: Commits Overview

    • Shows incremental development, meaningful commit messages, and version control history.
  • Project Board: Project Board

    • Visualizes user stories, tasks, and progress using an Agile board (e.g., GitHub Projects).

These images document the planning, tracking, and iterative development process for The Dead Web.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors