Societify Logo

Introduction

Welcome to the Societify documentation. Societify is a comprehensive Multi-Tenant SaaS Platform for Society Management, designed to streamline operations for residential communities, offering seamless management of visitors, billing, facilities, and communications.

๐Ÿ“ฑ

Single Mobile App for All Roles

Societify Mobile is a unified Flutter application that supports 9 distinct user roles in a single app: Super Admin, Society Admin, Sub Admin, Accountant, Resident, Guard, Vendor, Staff, and Collector. Users simply log in with their credentials, and the app automatically routes them to their role-specific dashboard.

Platform Architecture

๐ŸŒ

Societify Web

Laravel 12 + React 19 + Inertia.js

Admin Panel & Backend API for Super Admin, Society Admin, Sub Admin, and Accountant roles.

๐Ÿ“ฑ

Societify Mobile

Flutter 3.19+ with GetX

Single unified mobile app supporting all 9 user roles with role-based dashboards and features.

Key Features

โ˜๏ธ

Multi-Tenant SaaS

Manage unlimited societies from a single Super Admin dashboard with complete data isolation.

๐Ÿ’ณ

Automated Billing

Auto-generate bills with multiple charge heads, penalties, and integrated payment gateways.

๐Ÿ›ก๏ธ

Visitor Security

QR-code based visitor entry/exit system with pre-approval and real-time notifications.

๐ŸŠ

Facility Booking

Online facility booking with slot management, payments, and conflict-free scheduling.

๐ŸŽซ

Helpdesk System

Ticket-based complaint system with staff assignment, tracking, and feedback.

๐Ÿšจ

SOS Emergency

One-tap emergency alerts to guards and management with location sharing.

System Requirements

Before installing Societify, ensure your environment meets the following requirements:

Backend Server

Important: Ensure that your server exposes the public directory as the web root.

Mobile App Development

Installation

Follow these steps to set up the Backend and the Mobile Application.

1. Web Installer (Recommended)

Upload the project zip file to your server (public_html) and extract it.

Open your website URL in the browser (e.g., https://yourdomain.com/install). You will be greeted by the simple setup wizard.

2. CLI Installation (Manual)

Extract the project zip file to your server directory and install dependencies:

cd /path-to-your-project
composer install --optimize-autoloader --no-dev
cp .env.example .env
php artisan key:generate
                    

Create a MySQL database and update your .env file with database credentials. Then run migrations:

php artisan migrate --seed
Success: The database has been seeded with default admin credentials.
Email: admin@example.com
Password: password
Prerequisites: Install Flutter SDK (3.19+ recommended) and run flutter doctor until it shows no blocking issues.

1. Flutter Setup

Install Flutter for your OS:

  • Windows: Download + install from https://docs.flutter.dev/get-started/install/windows
  • macOS: Download + install from https://docs.flutter.dev/get-started/install/macos
  • Linux: Download + install from https://docs.flutter.dev/get-started/install/linux

Navigate to the mobile app directory and install packages:

cd mobile-app
flutter pub get
Important: Make sure you're using Flutter 3.19.0 or higher. Update Flutter if needed: flutter upgrade

2. API URL Configuration

Configure the API base URL in lib/constants/api_constants.dart (single base URL):

class ApiConstants {
  /// Production API URL - Change this to your backend URL
  static const String baseUrl = 'https://yourdomain.com/api';
}
Before Release: Ensure baseUrl points to your production backend.

3. App Logo & Icons Configuration

Android App Icon

Replace the app icon files in the following directories:

  • android/app/src/main/res/mipmap-hdpi/ic_launcher.png (72x72)
  • android/app/src/main/res/mipmap-mdpi/ic_launcher.png (48x48)
  • android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (96x96)
  • android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (144x144)
  • android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png (192x192)
  • android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml (Adaptive icon)

iOS App Icon

Replace app icons in ios/Runner/Assets.xcassets/AppIcon.appiconset/:

  • 20x20, 29x29, 40x40, 60x60, 76x76, 83.5x83.5, 1024x1024 sizes
  • Or use Xcode to set app icons: Open ios/Runner.xcworkspace โ†’ Select Runner target โ†’ App Icons
Tip: Use online tools like flutter_launcher_icons package to generate all icon sizes automatically. Add to pubspec.yaml and run flutter pub run flutter_launcher_icons

4. App Name & Package Configuration

Android Package Name

Update package name in android/app/build.gradle.kts:

android {
    defaultConfig {
        applicationId = "com.yourcompany.societify" // Change this
        // ...
    }
}

Also update package name in AndroidManifest.xml files and Java/Kotlin source files.

iOS Bundle Identifier

Update bundle identifier in ios/Runner.xcodeproj/project.pbxproj or via Xcode:

  • Open ios/Runner.xcworkspace in Xcode
  • Select Runner target โ†’ General tab
  • Change Bundle Identifier to com.yourcompany.societify

App Display Name

Update app name in:

  • Android: android/app/src/main/AndroidManifest.xml โ†’ android:label
  • iOS: ios/Runner/Info.plist โ†’ CFBundleDisplayName

5. Firebase Setup

Place your Firebase configuration files in the respective directories:

  • Android: android/app/google-services.json
  • iOS: ios/Runner/GoogleService-Info.plist
Important: Make sure the Firebase project package name/bundle ID matches your app's package name/bundle identifier.

6. Build Configuration

Android Signing

Configure app signing in android/app/build.gradle.kts:

android {
    signingConfigs {
        create("release") {
            keyAlias = "your-key-alias"
            keyPassword = "your-key-password"
            storeFile = file("path/to/keystore.jks")
            storePassword = "your-store-password"
        }
    }
    buildTypes {
        getByName("release") {
            signingConfig = signingConfigs.getByName("release")
        }
    }
}

iOS Signing

Configure signing in Xcode:

  • Open ios/Runner.xcworkspace in Xcode
  • Select Runner target โ†’ Signing & Capabilities
  • Select your development team
  • Xcode will automatically manage provisioning profiles

7. Build Commands

After configuration, build your app:

# Android APK
flutter build apk --release

# Android App Bundle (for Play Store)
flutter build appbundle --release

# iOS (requires macOS and Xcode)
flutter build ios --release

System Settings (Database-driven)

All operational configuration (payments, mail, SMS/WhatsApp, etc.) is managed in the web dashboard settings and stored in the database. These values are not configured in .env.

System Settings

Figure 3: System Settings & Configuration

Payments (configured in Settings)

Payment providers (Razorpay / Stripe / PayPal) are configured from the admin panel:

Note: Client apps only receive public keys where needed. Secret keys remain server-side and are stored in the database.

Razorpay webhook secret (required)

Important: Webhook verification is enabled. Set razorpay_webhook_secret in the admin panel (database-driven):
  • Society payments: Society Admin โ†’ Settings โ†’ Payment
  • SaaS subscriptions: Super Admin โ†’ Settings โ†’ Payments

Notifications & Messaging (configured in Settings)

Notification channels are also configured in the admin panel (database-driven):

Cron Jobs

Societify requires a single Cron entry to run scheduled tasks (like subscription checks, cleanup).

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

Mail Configuration

Mail (SMTP) settings are configured in the web dashboard settings and stored in the database (not in .env).

Mail Configuration

SMTP Settings

Enter your mail provider details in Settings (host, port, username, password, encryption, from name/address), then send a test email to confirm delivery.

Super Admin Guide

The Super Admin panel is the central control hub for managing the entire platform. It allows you to oversee multiple societies, manage subscriptions, and configure system-wide settings.

Super Admin Dashboard

1. Managing Societies

Navigate to the Societies tab to create and manage society accounts. This is where you onboard new communities onto the platform.

Society Management

2. Subscription Plans

Create various subscription tiers (e.g., Free, Gold, Platinum) with different feature sets and limits. You can define monthly and yearly pricing for each plan.

Subscription Plans

3. User Management

View and manage all system users, including other admins and society staff. You can reset passwords and update roles directly from this panel.

User Management

Society Admin Guide

The Society Admin panel is designed for managing the day-to-day operations of a specific community, covering everything from residents to financial accounting.

Society Admin Dashboard

1. Property Management

Set up the physical structure of your community by defining buildings (blocks) and individual units (flats/villas).

Buildings List

Buildings

Units List

Units

2. Resident Management

Maintain a digital directory of all residents. The system supports Owners, Tenants, and Family Members.

Residents Directory

3. Billing & Accounting

Automate your society's finances. The billing module allows you to generate bills, track revenue, and record expenses.

Bills List Revenue Stats

4. Visitor Management

Secure your gates with the visitor tracking system. Guards can check residents in/out, and residents can pre-approve guests via the mobile app.

Visitor Logs

5. Facility Booking

Manage community amenities like Clubhouses, Swimming Pools, and Tennis Courts. Residents can book slots online, and you can track utilization.

Facilities List

6. Helpdesk & Complaints

A centralized system for tracking resident complaints. Assign tickets to staff (electricians, plumbers) and track resolution times.

Complaints List

7. Announcements & Notices

Broadcast important information to all residents instantly via mobile push notifications and email.

Announcements

Mobile App Overview

Societify Mobile is a single unified Flutter application that supports all 9 user roles. Users log in with their credentials, and the app automatically displays the appropriate dashboard and features based on their role.

Important: All roles (Resident, Guard, Vendor, Staff, Collector, Tenant, etc.) are accessed through the same mobile app. The app automatically adapts based on the logged-in user's role.

Supported User Roles (9 Types)

๐Ÿ‘‘

Super Admin

Platform owner - manages all societies, subscriptions, fees

Web Only
๐Ÿข

Society Admin

Society owner - full control of their society

Web Only
๐Ÿ‘ค

Sub Admin

Limited administrative access with customizable permissions

Web Only
๐Ÿ’ฐ

Accountant

Financial management - bills, payments, reports

Web Only
๐Ÿ 

Resident

Unit owners - full resident features

Mobile App
๐Ÿ”‘

Tenant

Rental unit management with owner collaboration

Mobile App
๐Ÿ‘ฎ

Guard

Security personnel - visitor management

Mobile App
๐Ÿ”ง

Vendor

External service providers - job assignments

Mobile App
๐Ÿง‘โ€๐Ÿ”ง

Staff

Maintenance staff - ticket management

Mobile App
๐Ÿ’ต

Collector

Door-to-door payment collectors

Mobile App

Mobile App Technical Features

Resident Features (24 Screens)

Residents are the primary users who live in the society. They access all resident features through the unified Societify Mobile app.

Login Screen

Secure Login & OTP

Resident Dashboard

Dashboard

Dashboard

๐Ÿ’ฐ Bills & Payments

๐Ÿšช Visitor Management

๐ŸŠ Facility Booking

๐Ÿ”ง Maintenance Tickets

๐Ÿ“ข Announcements

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Community

๐Ÿก Household Management

๐Ÿ“– Directory

Bills Management

Bill Management Interface

Guard Features (6 Screens)

Designed for security personnel to manage visitor entry/exit and emergency alerts. Guards access these features through the unified Societify Mobile app.

Guard Dashboard

Key Features

Vendor & Staff Features

For service providers and society staff assigned to maintenance jobs. Both roles access their features through the unified Societify Mobile app.

๐Ÿ”ง Vendor Features (4 Screens)

๐Ÿง‘โ€๐Ÿ”ง Staff Features (5 Screens)

Collector Features (5 Screens)

For door-to-door payment collectors. Collectors access these features through the unified Societify Mobile app.

Key Features

Features Overview

Societify is a comprehensive SaaS platform with extensive features for managing residential communities. Below is a complete overview of all available features.

Platform Statistics

9
User Roles
44+
Mobile Screens
60+
Web Controllers
70+
Database Tables
3
Payment Gateways
3
SMS Gateways

SaaS & Multi-Tenancy Features

Societify is built as a true multi-tenant SaaS platform, allowing you to manage unlimited societies from a single installation.

Multi-Tenancy Architecture

Subscription Management

Billing & Payment Features

Comprehensive automated billing system with multiple payment gateway integrations.

Automated Billing System

Payment Gateway Integration

โœ… Razorpay

Fully integrated with Razorpay for seamless payments

โœ… Stripe

International payment processing support

โœ… PayPal

Global payment gateway integration

Collector Management

Visitor Management Features

Comprehensive visitor security system with QR code-based entry/exit tracking.

Visitor Security System

Community Features

Engage residents with social features, announcements, and community building tools.

Announcement System

Social Features

Emergency Alert System

Security Notes

Key security review fixes and platform hardening notes.

Razorpay webhook authentication (fixed)

OTP in API response (fixed)

Payment secrets exposure (fixed)

PayPal SDK (fixed)

Folder Structure

Understanding the project structure.

Razorpay Integration

Backend API implementation details for Razorpay Facility Bookings.

1. Create Razorpay Order

Endpoint: POST /api/resident/facility-bookings/create-order

// Request Body
{
  "facility_id": 1,
  "slot_id": 2,
  "booking_date": "2025-12-10",
  "amount": 500
}

2. Verify Payment

Endpoint: POST /api/resident/facility-bookings/verify-payment

This endpoint verifies the signature returned by the Razorpay SDK and confirms the booking.

3. Webhook Handling

The system listens to Razorpay webhooks to handle async payment updates.

4. Bulk Availability (Optimization)

Endpoint: GET /api/resident/facilities/{id}/availability

To prevent the "All Slots Green" bug, use this endpoint to fetch booking counts/availability efficiently.

// Response
{
    "success": true,
    "data": {
        "2025-12-07": "full",
        "2025-12-08": "partial",
        "2025-12-09": "available"
    }
}