Skip to main content

Fenice

Fenice is our multi-tenant reading application monorepo that provides white-label reading apps for publishers and content distributors across multiple platforms (iOS, Android, macOS, Windows), maintaining a consistent experience and unified codebase.

Overview

Fenice serves as our comprehensive B2B white-label reading application solution, providing:

  • Multi-platform reading applications (Mobile, Desktop)
  • White-label customization for 25+ active publishers/tenants
  • Universal "Publica Reader" app for accessing content from any tenant
  • Unified codebase with shared business logic
  • Cross-platform content synchronization and offline reading
  • DRM content protection
  • Reading session tracking and limited analytics
  • Multi-tenant configuration and branding management

Architecture

Monorepo Structure

Core (/fenice/)

Shared library containing all business logic

  • Version: 1.23.6
  • Technology: React/JavaScript modular architecture
  • Components: UI components, screens, services, state management (Redux), navigation, themes, localization
  • Purpose: Centralized business logic shared across all platforms

Mobile (/mobile/)

React Native application for iOS and Android

  • Name: "publicalamobile"
  • Technology: React Native 0.75.4
  • Dependency: "fenice": "link:../fenice"
  • Features: Google/Apple/Facebook authentication, Firebase messaging, offline storage, DRM protection

Desktop (/desktop/)

Electron application for Windows and macOS

  • Name: "PublicaReader"
  • Version: 0.12.2
  • Technology: React + Electron + Tailwind CSS
  • Dependency: "fenice": "link:../fenice"
  • Features: Auto-updates, deep linking, cross-platform distribution (Windows x64, macOS x64/ARM64)

Technology Stack

Frontend/Core

  • React: Primary UI library
  • Redux: Global state management
  • React Navigation: Screen navigation
  • i18next: Internationalization
  • Axios: HTTP client

Mobile Specific

  • React Native: Cross-platform mobile framework
  • Firebase: Analytics, messaging, crashlytics
  • AsyncStorage: Local storage
  • React Native Reanimated: Animations

Desktop Specific

  • Electron: Desktop application framework
  • Tailwind CSS: Styling framework
  • Electron Builder: Packaging and distribution
  • Electron Updater: Auto-update system

Key Features

Multi-Tenant System

  • 25+ Active Publishers/Tenants: Including La Tercera, Santillana, Planeta, Bajalibros, UNAM, and more
  • Custom Branding: Colors, logos, icons per tenant
  • Independent Versioning: Each tenant maintains their own version
  • Flexible Configuration: Staging and production environments per tenant

Reading Experience

  • Offline Reading: Content synchronization and local storage
  • Cross-Platform Sync: Consistent experience across mobile and desktop
  • DRM Protection: Digital content protection and rights management
  • Multi-Format Support: PDF, EPUB, and audiobooks
  • Accessibility: Screen reader support and accessibility features

Platform Features

  • White-Label Solution: Complete customization for publishers
  • Universal App: "Publica Reader" for accessing content from any tenant
  • Deep Linking: Custom URL schemes for content access
  • Push Notifications: Content updates and engagement notifications
  • Multi-Language Support: Internationalization for global markets
  • Auto-Updates: Seamless application updates across platforms

Integration Capabilities

Fenice integrates with multiple platform services:

Core Platform Integration

  • Farfalla: Main backend API for content management, user data, and all monetization features
  • Coniglio: Reading and listening session event tracking
  • Volpe: Content reader/player integration

External Services

  • Firebase: Analytics, messaging, and crash reporting
  • Google Analytics: Limited analytics and engagement tracking
  • Sentry: Error tracking and performance monitoring
  • CloudFlare: CDN for content and application distribution
  • AWS S3: Content storage and delivery
  • Social Auth: Google, Apple, Facebook authentication

Distribution Channels

  • App Stores: iOS App Store, Google Play Store
  • Web: Browser-based reading applications
  • Desktop: Windows and macOS native applications

Development Workflow

Environment Management

/env/default/
├── config.env # General configuration
├── client/app.env # Client configuration
└── backend/app.env # Backend configuration

Automation Scripts (/node_scripts/)

  • create_env.js: Environment generation
  • build_tenant.js: Tenant-specific builds
  • upgrade_version.js: Version management
  • switch_tenant.js: Tenant switching
  • run.js: Application execution

Development Commands

# Platform Development
yarn desktop # Run desktop application
yarn android # Run Android application
yarn ios # Run iOS application

# Environment Management
yarn create_env [env] # Create environment
yarn clone_env # Clone environment

# Version Management
yarn upgrade_version # Update versions
yarn build_tenant # Build specific tenant

Architecture Benefits

  1. Consistency: Same experience across all platforms
  2. Scalability: Easy addition of new tenants
  3. Maintainability: Centralized changes in Core
  4. Efficiency: Parallel development across platforms
  5. Flexibility: Per-tenant customization without code duplication
  6. Quality: Centralized testing and unified quality tools

Development

For detailed development information, tenant configuration guides, deployment procedures, and platform-specific implementation details, refer to the additional documentation sections in this project area.


X

Graph View