This commit is contained in:
parent
f7f25ad69a
commit
55401eda3a
19 changed files with 732 additions and 499 deletions
|
|
@ -1570,15 +1570,19 @@ This project demonstrates a modern Phoenix application built with:
|
|||
- ✅ **Flexible data model** (EAV pattern with union types)
|
||||
|
||||
**Key Achievements:**
|
||||
- 🎯 8 sprints completed
|
||||
- 🚀 82 pull requests merged
|
||||
- ✅ Core features implemented (CRUD, search, auth, sync)
|
||||
- 🎯 9+ sprints completed
|
||||
- 🚀 100+ pull requests merged
|
||||
- ✅ Core features implemented (CRUD, search, auth, sync, membership fees, roles & permissions)
|
||||
- ✅ Membership fees system (types, cycles, settings)
|
||||
- ✅ Role-based access control (RBAC) with 4 permission sets
|
||||
- ✅ Member field visibility settings
|
||||
- ✅ Sidebar navigation (WCAG 2.1 AA compliant)
|
||||
- 📚 Comprehensive documentation
|
||||
- 🔒 Security-focused (audits, validations, policies)
|
||||
- 🐳 Docker-ready for self-hosting
|
||||
|
||||
**Next Steps:**
|
||||
- Implement roles & permissions
|
||||
- ✅ ~~Implement roles & permissions~~ - RBAC system implemented (2026-01-08)
|
||||
- Add payment tracking
|
||||
- ✅ ~~Improve accessibility (WCAG 2.1 AA)~~ - Keyboard navigation implemented
|
||||
- Member self-service portal
|
||||
|
|
@ -1586,8 +1590,150 @@ This project demonstrates a modern Phoenix application built with:
|
|||
|
||||
---
|
||||
|
||||
**Document Version:** 1.3
|
||||
**Last Updated:** 2025-12-02
|
||||
## Recent Updates (2025-12-02 to 2026-01-13)
|
||||
|
||||
### Membership Fees System Implementation (2025-12-11 to 2025-12-26)
|
||||
|
||||
**PR #283:** *Membership Fee - Database Schema & Ash Domain Foundation* (closes #275)
|
||||
- Created `Mv.MembershipFees` domain
|
||||
- Added `MembershipFeeType` resource with intervals (monthly, quarterly, half_yearly, yearly)
|
||||
- Added `MembershipFeeCycle` resource for individual billing cycles
|
||||
- Database migrations for membership fee tables
|
||||
|
||||
**PR #284:** *Calendar Cycle Calculation Logic* (closes #276)
|
||||
- Calendar-based cycle calculation module
|
||||
- Support for different intervals
|
||||
- Cycle start/end date calculations
|
||||
- Integration with member joining dates
|
||||
|
||||
**PR #290:** *Cycle Generation System* (closes #277)
|
||||
- Automatic cycle generation for members
|
||||
- Cycle regeneration when fee type changes
|
||||
- Integration with member lifecycle hooks
|
||||
- Actor-based authorization for cycle operations
|
||||
|
||||
**PR #291:** *Membership Fee Type Resource & Settings* (closes #278)
|
||||
- Membership fee type CRUD operations
|
||||
- Global membership fee settings
|
||||
- Default fee type assignment
|
||||
- `include_joining_cycle` setting
|
||||
|
||||
**PR #294:** *Cycle Management & Member Integration* (closes #279)
|
||||
- Member-fee type relationship
|
||||
- Cycle status tracking (unpaid, paid, suspended)
|
||||
- Member detail view integration
|
||||
- Cycle regeneration on fee type change
|
||||
|
||||
**PR #304:** *Membership Fee 6 - UI Components & LiveViews* (closes #280)
|
||||
- Membership fee type management LiveViews
|
||||
- Membership fee settings LiveView
|
||||
- Cycle display in member detail view
|
||||
- Payment status indicators
|
||||
|
||||
### Custom Fields Enhancements (2025-12-11 to 2026-01-02)
|
||||
|
||||
**PR #266:** *Implements search for custom fields* (closes #196)
|
||||
- Custom field search in member overview
|
||||
- Integration with full-text search
|
||||
- Custom field value filtering
|
||||
|
||||
**PR #301:** *Implements validation for required custom fields* (closes #274)
|
||||
- Required custom field validation
|
||||
- Form-level validation
|
||||
- Error messages for missing required fields
|
||||
|
||||
**PR #313:** *Fix hidden empty custom fields* (closes #282)
|
||||
- Fixed display of empty custom fields
|
||||
- Improved custom field visibility logic
|
||||
|
||||
### UI/UX Improvements (2025-12-03 to 2025-12-16)
|
||||
|
||||
**PR #240:** *Implement dropdown to show/hide columns in member overview* (closes #209)
|
||||
- Field visibility dropdown
|
||||
- User-specific field selection
|
||||
- Integration with global settings
|
||||
|
||||
**PR #247:** *Visual hierarchy for fields in member view and edit form* (closes #231)
|
||||
- Improved field grouping
|
||||
- Visual hierarchy improvements
|
||||
- Better form layout
|
||||
|
||||
**PR #250:** *UX - Avoid opening member by clicking the checkbox* (closes #233)
|
||||
- Checkbox click handling
|
||||
- Prevented accidental navigation
|
||||
- Improved selection UX
|
||||
|
||||
**PR #259:** *Fix small UI issues* (closes #220)
|
||||
- Various UI bug fixes
|
||||
- Accessibility improvements
|
||||
|
||||
**PR #293:** *Small UX fixes* (closes #281)
|
||||
- Additional UX improvements
|
||||
- Polish and refinement
|
||||
|
||||
**PR #319:** *Reduce member fields* (closes #273)
|
||||
- Removed unnecessary member fields
|
||||
- Streamlined member data model
|
||||
- Migration for field removal
|
||||
|
||||
### Roles and Permissions System (2026-01-06 to 2026-01-08)
|
||||
- ✅ **RBAC Implementation Complete** - Member Resource Policies (#345)
|
||||
- Four hardcoded permission sets: `own_data`, `read_only`, `normal_user`, `admin`
|
||||
- Role-based access control with database-backed roles
|
||||
- Member resource policies with scope filtering (`:own`, `:linked`, `:all`)
|
||||
- Authorization checks via `Mv.Authorization.Checks.HasPermission`
|
||||
- System role protection (cannot delete critical roles)
|
||||
- Comprehensive test coverage
|
||||
|
||||
### Actor Handling Refactoring (2026-01-09)
|
||||
- ✅ **Consistent Actor Access** - `current_actor/1` helper function
|
||||
- Standardized actor access across all LiveViews
|
||||
- `ash_actor_opts/1` helper for consistent authorization options
|
||||
- `submit_form/3` wrapper for form submissions with actor
|
||||
- All Ash operations now properly pass `actor` parameter
|
||||
- Error handling improvements (replaced bang calls with proper error handling)
|
||||
|
||||
### Internationalization Improvements (2026-01-13)
|
||||
- ✅ **Complete German Translations** - All UI strings translated
|
||||
- CI check for empty German translations in lint task
|
||||
- Standardized English `msgstr` entries (all empty for consistency)
|
||||
- Corrected language headers in `.po` files
|
||||
- Added missing translations for error messages
|
||||
|
||||
### Code Quality Improvements (2026-01-13)
|
||||
- ✅ **Error Handling** - Replaced `Ash.read!` with proper error handling
|
||||
- ✅ **Code Complexity** - Reduced nesting depth in `UserLive.Form`
|
||||
- ✅ **Test Infrastructure** - Role tag support in `ConnCase`
|
||||
|
||||
### CSV Import Feature (2026-01-13)
|
||||
- ✅ **CSV Templates** - Member import templates (#329)
|
||||
- German and English CSV templates
|
||||
- Template files in `priv/static/templates/`
|
||||
|
||||
### Sidebar Implementation (2026-01-12)
|
||||
- ✅ **Sidebar Navigation** - Replaced navbar with sidebar (#260)
|
||||
- Standard-compliant sidebar with comprehensive tests
|
||||
- DaisyUI drawer pattern implementation
|
||||
- Desktop expanded/collapsed states
|
||||
- Mobile overlay drawer
|
||||
- localStorage persistence for sidebar state
|
||||
- WCAG 2.1 Level AA compliant
|
||||
|
||||
### Member Field Settings (2026-01-12, PR #300, closes #223)
|
||||
- ✅ **Member Field Visibility Configuration** - Global settings for field visibility
|
||||
- JSONB-based visibility configuration in Settings resource
|
||||
- Per-field visibility toggle (show/hide in member overview)
|
||||
- Atomic updates for single field visibility changes
|
||||
- Integration with member list overview
|
||||
- User-specific field selection (takes priority over global settings)
|
||||
- Custom field visibility support
|
||||
- Default visibility: all fields visible except `exit_date` (hidden by default)
|
||||
- LiveComponent for managing member field visibility in settings page
|
||||
|
||||
---
|
||||
|
||||
**Document Version:** 1.4
|
||||
**Last Updated:** 2026-01-13
|
||||
**Maintainer:** Development Team
|
||||
**Status:** Living Document (update as project evolves)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue