arcane_archive

License MIT

Arcane Archive - Magic: The Gathering companion application

Introduction

Arcane Archive is a Magic: The Gathering (MTG) companion application designed to help players manage their card collections, build decks, and track game stats. The application provides a user-friendly interface for organizing cards, searching for specific cards or sets, and keeping track of mana and life points during gameplay. Arcane Archive aims to enhance the overall MTG experience by offering essential tools and features that cater to both casual and competitive players.

Installation

To install the Arcane Archive application, follow these steps:

  1. Clone the repository from GitHub:
    git clone
    
  2. Install the required dependencies:
    npm install
    
  3. Start the development server:
    npm run dev
    
  4. Open http://localhost:3000 in your browser to view the application.
  5. To run tests, use the following command:
    npm run test
    

Storybook Installation


npx storybook@latest init
  1. To start Storybook, use the following command:
    npm run storybook
    
  2. Open http://localhost:6006 in your browser to view the Storybook interface.
  3. To build a production version of Storybook, use the following command:
    npm run build-storybook
    

Scope

This report will cover an in-depth analysis and documentation of the Arcane Archive application. It will define the purpose, features, tools & technologies, and development process of the application.

The report will include:

Objectives

Arcane Archive aims to simplify card management and enhance players overall game experience. Whether for casual play or competitive matches, the app serves as an indispensable tool for any MTG enthusiast. The main objectives of Arcane Archive are: To provide MTG players and enthusiasts with a feature rich personal library for managing their card collection, including library organization and set management. To offer a powerful user-friendly search feature that allows users to easily find specific cards or sets. To include essential tools such as a mana counter and life counter for gameplay tracking. To support multiple devices and platforms, ensuring an optimal experience across web and mobile.

Target Audience

The primary users of the Arcane Archive application include:

Overview

Arcane Archive is feature rich application designed for Magic: The Gathering (MTG) enthusiasts. The app aims to enhance player experiences by providing tools and features that help players streamline their card management. Users can login, create detailed profiles, search scryfall API for cards and sets, and manage their personal card libraries, including the ability to add, delete, and categorize cards and sets.

Feature Roadmap

Tools & Technologies

  1. IDEs/Editors/Debuggers
    • IntelliJ IDEA
    • PyCharm
    • Postman
  2. Frameworks
    • Frontend
      • NextJS
    • Backend
      • FastAPI
  3. Languages
    • Python
    • Typescript
  4. Package Managers
    • Npm
    • Pip
    • Poetry
    • Virtualenv
  5. Version Control / Continuous Integration / Continuous Deployment
    • Git / GitHub
    • GitHub Actions
  6. Test Frameworks
    • Frontend
      • Jest
      • Cypress
        • End-to-end testing
        • Component testing
      • Babel
        • For testing older browsers
    • Backend
      • pytest
  7. Software Libraries
    • Frontend
      • React
      • Form Handling
        • React Hook Form
      • Styling
        • Tailwind CSS
    • Backend
      • Database Libraries
        • SQLAlchemy
        • Psycopg2 for PostgreSQL Database
      • Authentication & Authorization
        • Authlib
        • FastAPI Users
      • Data Validation
        • Pydantic
      • API Documentation
        • SwaggerUI
      • Deployment
        • Uvicorn
        • Cloudflare Pages
      • Security
        • bcrypt
        • pyjwt
        • helmet
        • CORS
      • Development Tools
        • Eslint
  8. Database
    • PostgreSQL
    • UI Interface

Design Decisions

User Interface

The user interface design for Arcane Archive aims to provide an intuitive user-friendly experience for Magic: The Gathering players and enthusiasts.

Key Design Choices

Layout

python
def as_dict(self):
   return {
       "id": self.id,
       "name": self.name,
       "image_uris": self.image_uris,
       "set_name": self.set_name,
       "rarity": self.rarity,
       "mana_cost": self.mana_cost,
       "prices": self.prices,
       "colors": self.colors,
       "artist": self.artist,
       "flavor_text": self.flavor_text,
       "legalities": self.legalities,
       "loyalty": self.loyalty,
       "collector_number": self.collector_number,
       "scryfall_uri": self.scryfall_uri,
       "type_line": self.type_line
   }`

user_accounts

Stores user information including username, hashed password, email, age, and whether the user is active.

user_login_history

Stores user_id from user_accounts table, login_timestamp, ip_address, successful, failure_reason

user_library

Stores a library_id, user_id, card_id, set_id

cards

Stores card_id, card_name, set_name, price, colors, rarity, legalities, loyalty, collector_number, scryfall_uri, card_type, mana_cost, set_id

sets

Stores set_id, set_name, release_date, set_code

event_history

Stores event_id, user_id, event_type, timestamp to show user history when adding and deleting cards and sets.

ER Diagrams/Schema Diagrams

Data Storage

Challenges

Future Enhancements

UI / UX Design

Evaluation and Feedback

## User Testing
## Feedback Analysis
## Improvements ## Conclusion ## References 1. https://scryfall.com/docs/api