2.5 KiB
2.5 KiB
Decisions
This document outlines the decisions made during the development of the Ledgerrz application.
Core Concepts
- Dynamic: A relationship between two or more users. This will be the core container for interactions.
- Ledger: A score-tracking entity within a Dynamic. The name "Ledger" will be used instead of "Score" to establish a more distinct domain language.
- Mutation: An event that modifies a Ledger. It can be a direct modification or a suggestion requiring approval.
- Participant: A user's role within a Dynamic. This will be used to manage permissions.
Technology Stack
- Backend: Laravel
- Frontend: Vue.js with Inertia.js
- Real-time: Laravel Reverb for notifications and real-time updates.
- Testing: Pest for PHP tests.
- Styling: Tailwind CSS (based on the presence of
tailwindcss-developmentskill).
Initial Database Schema
I will start with a basic schema and evolve it as I build features.
users: Standard Laravel users table.dynamics:idnamerules(TEXT)created_at,updated_at
ledgers:iddynamic_idnamerules(TEXT)score(INTEGER, default 0)created_at,updated_at
mutations:idledger_iduser_id(author)type(e.g., 'addition', 'subtraction')amount(INTEGER)description(TEXT)status(e.g., 'approved', 'pending', 'rejected')created_at,updated_at
participants: (Pivot table for users and dynamics)user_iddynamic_idrole(e.g., 'owner', 'editor', 'viewer')
media: For handling media uploads associated with mutations.chats: For the chat streams on Dynamics and Mutations.
Development Approach
- Setup: Set up basic project structure, including models and migrations for the initial schema.
- Dynamics: Implement the creation and management of Dynamics.
- Ledgers: Implement the creation and management of Ledgers within a Dynamic.
- Mutations: Implement the core functionality of adding and suggesting mutations.
- UI: Build out the Vue components for each feature, focusing on a clean, dark, BDSM-themed aesthetic.
- Real-time: Integrate Laravel Reverb for notifications.
- Testing: Write Pest tests for all new backend functionality.
- Git: Use feature branches and make regular commits.
This is a living document and will be updated as the project progresses.