Introduction
Society Zen is a comprehensive society management software designed to address the challenges faced by modern residential communities. It provides a centralized platform for managing various aspects of community life, including amenities, service providers, security, vehicles, and daily activities
Technology Stack
Agri Tech utilizes a robust technology stack to build a reliable and efficient platform. Here are the keycomponents:
Frontend
React : A popular JavaScript library for building user interfaces.
Typescript : A statically typed superset of JavaScript.
Chakra UI : A component library for creating accessible and customizable UI components.
Axios : A promise-based HTTP client for making API requests.
Tanstack React Query : Used for efficient data fetching and state management.
Tanstack React Router : For handling client-side routing.
Dexie : A client-side database library for storing data locally
Dexie-react-hooks : React hooks for interacting with Dexie.
Felte : A form library for handling form state and validation.
Jotai : A state management library based on atoms and selectors.
Zod : A TypeScript-first schema definition library
Backend
Rust: A systems programming language known for its safety and performance.
Actix Web Framework: A lightweight and fast web framework for Rust.
PostgreSQL: A robust and reliable open-source relational database management system.
JSON-RPC API: Used for communication between the front-end and back-end.
Event Sourcing and CQRS: Architectural patterns for handling complex domain logic.
Architectural Overview & Codebase HightLight
ComponentsSociety Zen follows a component-based architecture, organizing the application into reusable components. This promotes maintainability and code reusability.
Features: The application includes role-based features for admin, superadmin, member, and security roles. Specific features like amenity booking and entry log for security personnel are seamlessly integrated.
Routes: Separate routes are defined for different features, ensuring clear navigation within the application using Tanstack routes.
Types (DTO): Necessary types (Data Transfer Objects) are defined in a dedicated folder, promoting type safety and consistency across the application.
Database: Client-Side(Dexie): Dexie is used for local data storage, resulting in faster responses and improved user experience.
Server-Side(PostgreSQL): PostgreSQL is highly robust and reliable, making it suitable for critical applications.
Services: Services handle API calls using Axios, facilitating communication with the back-end.
Query-Mutation Services: Tanstack React Query is employed for mutation purposes, allowing seamless addition, updating, and deletion of data on the server.
Challenges and Solutions
-
Multiple Role Login: Implementing secure login for different roles (superadmin, admin, member, security).
-
Amenity Feature Handling: Managing amenity-related functionality throughout the application, including booking and entry logs.
-
Role-Based Data Separation: Ensuring that each role sees only relevant data (e.g., security personnel accessing limited information).
Achievements
Client-side Achievements
-
Offline Application Using Dexie: Society Zen provides offline functionality by leveraging Dexie for local data storage.
-
Efficient State Management with Jotai: Jotai simplifies state management across the application.
Server-side Achievements
- Rust for Safety and Performance
Memory Safety: Rust’s ownership model and strict borrow checker helped prevent common memory-related bugs. Performance: Rust’s zero-cost abstractions and low-level control ensured optimal execution. Concurrency: Rust’s lightweight threads (using async/await ) allowed efficient handling of concurrent requests.
- Actix Web Framework:
Actix Web, a fast and lightweight framework, enabled us to build robust APIs: Asynchronous Handling: Leveraging async handlers improved scalability. Middleware: Actix middleware facilitated tasks like authentication, logging, and CORS handling.
- PostgreSQL:
Robust and Reliable: PostgreSQL ensures data integrity and recovery even in challenging scenarios. Open-Source and Community Support: A large community of contributors ensures continuous improvement. ACID Compliance: Adhering to ACID properties guarantees transactional reliability.
Key Learnings
-
Role-Based Access Control (RBAC): Implementing RBAC was crucial for managing different user roles (superadmin, admin, member, security). It taught us the importance of fine-grained permissions and how to handle data visibility based on roles.
-
Offline Functionality with Dexie: Leveraging Dexie for local data storage allowed us to create an offline-capable application. We learned about handling synchronization between local and server data effectively.
-
Architectural Patterns (Event Sourcing and CQRS): Society Zen’s use of Event Sourcing and CQRS taught ushow to manage complex domain logic while maintaining scalability and consistency.
-
State Management with Jotai: Jotai’s simplicity and flexibility helped us manage application state efficiently. We learned that sometimes less can be more when it comes to state management libraries.
-
User-Centric Design: Focusing on user needs and usability was a recurring theme. We learned that a well- designed user experience is essential for adoption and satisfaction.
Conclusion
Society Zen demonstrates how thoughtful technology choices, architectural decisions, and innovative solutions can enhance community living. By addressing real-world challenges, it empowers residents and community administrators alike.