Bryce 3678869c26 feat: Add Terraform configuration for Google Cloud project
This commit introduces the complete Terraform infrastructure configuration for setting up the Rothbard Law Group client portal on Google Cloud. The changes include:

- Added google-beta provider for Firebase resources
- Created new Google Cloud Project with proper service enabling
- Enabled required Firebase APIs (firebase.googleapis.com)
- Enabled Firestore API (firestore.googleapis.com)
- Created Firebase Web App for the project
- Created Firestore database in native mode
- Added billing account configuration
- Updated project name and ID variables
- Added output values for Firebase app ID and Firestore database name

This infrastructure setup supports the application's authentication, session management, and data storage needs using Firebase Authentication, Firestore, and Filevine API integration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 08:09:45 -07:00
2025-10-22 17:34:13 -07:00
2025-10-22 17:34:13 -07:00
2025-10-22 17:34:13 -07:00
2025-10-29 09:11:53 -07:00
2025-10-29 09:11:53 -07:00
2025-10-22 17:34:13 -07:00
2025-10-22 17:34:13 -07:00
2025-10-22 17:34:13 -07:00

Rothbard Client Portal

A secure, server-side rendered client portal for Rothbard Law Group that enables authenticated users to view and manage their legal cases from the Filevine case management platform.

Overview

This web application provides a customized interface for law firm clients to:

  • Authenticate securely using Firebase Authentication
  • View their assigned legal cases and matters
  • Access case details including client information, matter descriptions, and contacts
  • Interact with Filevine API data in a user-friendly dashboard format

Architecture

The application is built with:

  • Backend: Flask (Python) web server
  • Frontend: Server-side rendered HTML with Tailwind CSS
  • Authentication: Firebase Authentication with session management
  • Database: Firestore for user profiles and preferences
  • External API: Filevine API for case management data

Project Structure

rothbard/
├── app.py                 # Main Flask application with routes and API integrations
├── generate_sample.py     # Utility to generate sample Filevine API responses
├── requirements.txt       # Python dependencies
├── rothbard-service-account.json  # Firebase service account credentials
├── static/
│   └── auth.js           # Client-side authentication handling
├── templates/            # Jinja2 HTML templates
│   ├── base.html        # Base template with navigation
│   ├── login.html       # Firebase login page
│   ├── welcome.html     # User welcome/onboarding page
│   └── dashboard.html   # Main case dashboard
├── examples/            # Sample Filevine API responses
│   ├── project_list.json
│   ├── project_contacts.json
│   └── client.json
└── .env                 # Environment variables (not tracked)

Core Features

Authentication System

  • Firebase Authentication integration for secure user login
  • Server-side session management with 8-hour expiration
  • User profile management in Firestore
  • Role-based access control (admin-enabled users only)

Case Management Dashboard

  • Real-time fetching of projects from Filevine API
  • Project filtering based on user's assigned email
  • Detailed case information display including:
    • Client names and matter descriptions
    • Project numbers and incident dates
    • Contact information and project URLs
  • Responsive design using Tailwind CSS

API Integration

  • OAuth 2.0 authentication with Filevine API
  • Bearer token management and refresh
  • Comprehensive data fetching:
    • Project lists with pagination support
    • Individual project details
    • Client information
    • Project contacts

Configuration

Required Environment Variables

Create a .env file with the following variables:

# Flask Configuration
FLASK_SECRET_KEY=your-secret-key-here

# Firebase Configuration
FIREBASE_API_KEY=your-firebase-api-key
FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
FIREBASE_PROJECT_ID=your-firebase-project-id
FIREBASE_APP_ID=your-firebase-app-id
FIREBASE_SERVICE_ACCOUNT_JSON='{"type":"service_account",...}'  # or set GOOGLE_APPLICATION_CREDENTIALS

# Filevine API Configuration
FILEVINE_CLIENT_ID=your-filevine-client-id
FILEVINE_CLIENT_SECRET=your-filevine-client-secret
FILEVINE_PERSONAL_ACCESS_TOKEN=your-filevine-pat
FILEVINE_ORG_ID=your-filevine-org-id
FILEVINE_USER_ID=your-filevine-user-id

Firebase Setup

  1. Create a Firebase project at https://console.firebase.google.com
  2. Enable Authentication with Email/Password provider
  3. Create a Firestore database
  4. Generate a service account key and save as rothbard-service-account.json
  5. Configure Authentication settings for your web app

Filevine API Setup

  1. Obtain API credentials from your Filevine account
  2. Create a Personal Access Token (PAT)
  3. Note your Organization ID and User ID
  4. Configure OAuth 2.0 client credentials

Installation and Setup

  1. Clone the repository

    git clone <repository-url>
    cd rothbard
    
  2. Create virtual environment

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. Install dependencies

    pip install -r requirements.txt
    
  4. Configure environment variables

    cp .env.example .env  # if available
    # Edit .env with your configuration
    
  5. Initialize Firebase

    • Place your service account JSON file at rothbard-service-account.json
    • Or set the GOOGLE_APPLICATION_CREDENTIALS environment variable
  6. Run the application

    python app.py
    

    The application will be available at http://localhost:5000

Usage

For Users

  1. Navigate to the application URL
  2. Sign in using Firebase Authentication (email/password)
  3. If not yet enabled, users will see a welcome page until an administrator enables their account
  4. Once enabled, users can access their case dashboard showing:
    • All assigned projects/matters
    • Client information and contact details
    • Project metadata and links to Filevine

For Administrators

  1. User profiles are stored in Firestore at users/{uid}
  2. Enable users by setting enabled: true and providing a caseEmail
  3. The caseEmail field determines which projects the user can access

Development Tools

Generate Sample API Data

Use the provided utility to generate sample Filevine API responses:

python generate_sample.py

This will create JSON files in the examples/ directory containing:

  • Sample project lists
  • Project contacts
  • Client information

These samples are useful for development and testing without hitting the live API.

Security Considerations

  • All API communications use HTTPS
  • Firebase ID tokens are verified server-side
  • Sessions have limited duration (8 hours)
  • User access is controlled through Firestore profiles
  • Sensitive credentials are stored in environment variables
  • Filevine API tokens are properly scoped and managed

Future Enhancements

Planned improvements include:

  • Firebase security rules hardening
  • Terraform infrastructure as code for Firebase setup
  • User-customizable dashboard columns
  • Enhanced styling and responsive design
  • Self-service user registration
  • Administrative user management interface
  • Real-time case updates
  • Document upload/download capabilities
  • Case status tracking and notifications

Dependencies

  • Flask 3.0.3 - Web framework
  • firebase-admin 6.6.0 - Firebase server SDK
  • python-dotenv 1.0.1 - Environment variable management
  • requests 2.32.3 - HTTP client for API calls
  • itsdangerous 2.2.0 - Security utilities for Flask

API Endpoints

Internal Application Routes

  • GET / - Home route (redirects based on auth status)
  • GET /login - Firebase login page
  • POST /session_login - Firebase ID token exchange
  • GET /logout - Session termination
  • GET /welcome - User onboarding page
  • GET /dashboard - Main case dashboard (authenticated users only)

Filevine API Integration

  • Projects: /fv-app/v2/Projects
  • Project Details: /fv-app/v2/Projects/{id}
  • Contacts: /fv-app/v2/projects/{id}/contacts
  • Client Info: /fv-app/v2/contacts/{id}

License

This project is proprietary software for Rothbard Law Group.

Description
No description provided
Readme 55 MiB
Languages
Python 55.5%
HTML 35.9%
HCL 8.2%
Dockerfile 0.3%
Shell 0.1%