Ilja Seryshev

Behind the build: How I built Personality Compass (454 questions, PDF reports) โ€” AMA / deep dive

byโ€ข

๐Ÿงญ Behind the Build: How I Created Personality Compass โ€“ An Offline-First Self-Discovery App with 454 Questions Across 3 Psychological Models

Hey Product Hunt community! ๐Ÿ‘‹ I'm Ilja, a solo developer from Estonia, and I wanted to share the story and architecture behind Personality Compass โ€“ a project that grew from a personal need into a fully-featured app now available in 4 stores.

๐Ÿง  The Problem I Wanted to Solve

I've always been fascinated by personality psychology โ€“ Enneagram, Big Five, etc. But I had two major frustrations:

  1. Privacy concerns: Most tests send your answers to servers. My data, my reflections โ€“ why should they leave my phone?

  2. Depth vs. accessibility: Free tests are often shallow (10-20 questions). Quality tests cost money or require internet.

So I decided to build my own solution. One that works 100% offline, keeps all data on device, and offers real depth โ€“ 454 questions in total.

๐Ÿ—๏ธ The App at a Glance

Feature

Details

Platform

Flutter / Dart

Architecture

Offline-first, local data only

Languages

English, Russian, Estonian (full localization)

Total Questions

454 across all tests

Tests

MindPath 16 (80/20 Q), MindPath 5D (120/20 Q), Enneagram (254/81 Q)

PDF Reports

Professional exports with charts, colors, and insights

Storage

All results saved locally, no cloud, no registration

๐Ÿ”ง Technical Deep Dive

Project Structure (simplified)

text

lib/
โ”œโ”€โ”€ main.dart
โ”œโ”€โ”€ components/        # Reusable UI components
โ”œโ”€โ”€ enneagram/         # Enneagram-specific logic
โ”‚   โ”œโ”€โ”€ cards/         # Result screen cards
โ”‚   โ”œโ”€โ”€ charts/        # Interactive Enneagram chart
โ”‚   โ””โ”€โ”€ constants/     # UI constants, colors
โ”œโ”€โ”€ models/            # Data models (questions, results, diary)
โ”œโ”€โ”€ screens/           # All app screens
โ”œโ”€โ”€ services/          # Business logic, test scoring
โ””โ”€โ”€ utils/             # PDF exporters, helpers, themes

Key Technical Challenges & Solutions

1. 100% Offline PDF Generation with Complex Graphics

The biggest technical hurdle: generating professional PDF reports that include interactive-style charts, all without internet.

Solution:

  • Used RepaintBoundary + PictureRecorder to capture widgets as images

  • Implemented fallback mechanisms with custom Painter when screenshot fails

  • Created adaptive timeouts (up to 3000ms) for different device capabilities

  • Built modular PDF sections โ€“ each part of the report (cover, chart, arrows, career) is a separate widget

dart

// Example: Capturing chart for PDF
final boundary = _chartKey.currentContext?.findRenderObject() as RenderRepaintBoundary;
final image = await boundary.toImage(pixelRatio: 3.0);
final byteData = await image.toByteData(format: ImageByteFormat.png);

2. Building Original Psychological Models (Avoiding Trademarks)

I wanted the depth of comprehensive personality models like the Big Five and Enneagram, but faced two challenges: privacy concerns (most tests send data to servers) and trademark restrictions (existing branded frameworks can't be replicated). So I built my own: MindPath 16 (a 16-type model analyzing cognitive preferences) and MindPath 5D (a 5-dimensional trait assessment) โ€“ completely original, 100% offline, and free from any third-party intellectual property restrictions.

3. The Full Enneagram (254 Questions!)

Most free Enneagram tests give you a type in 5 minutes. But real Enneagram work includes wings, subtypes, and development levels.

Implementation:

  • Core type identification (108 questions across 12 groups)

  • Subtype assessment (54 questions, sp/so/sx)

  • Development levels (162 statements)

  • Total: 254 questions โ€“ one of the most complete free Enneagram tests available

4. Interactive Enneagram Chart with "Smart" Arrows

The Enneagram diagram shows 9 points with connecting arrows. I wanted it to be context-aware:

  • By default: shows only development arrows for your type (reducing cognitive load)

  • On tap: shows arrows for any selected type

  • Auto-returns to your type after 5 seconds (balance between exploration and focus)

This "interactivity โ†’ PDF" cycle ensures users see the same visualization in reports as in the app.

๐ŸŽจ Design System & Consistency

I built a centralized style system (EnneagramCardStyles) that ensures visual consistency across all screens and PDF reports:

dart

// Single source of truth for styles
import './utils/enneagram_card_styles.dart' as styles;

// Using consistent components everywhere
styles.EnneagramCardStyles.buildEnhancedCard()
styles.EnneagramCardStyles.buildColoredSection()

Color theming: Each Enneagram type has its own color profile, consistently applied in UI, settings, and PDF exports.

๐Ÿงช Testing & Reliability

Unit tests ensure accuracy of psychological calculations:

  • MindPath 16/5D: Short and full version validation

  • Enneagram: Type identification (1-9), wings, subtypes (sp/so/sx), development levels (1-9)

  • All tests run on real data from assets/

bash

flutter test

๐Ÿ“Š By the Numbers

  • 3 psychological models

  • 454 total questions (80 + 120 + 254)

  • 3 languages (full localization)

  • 3 PDF report types (with professional formatting)

  • 4 app stores (iOS, Android, Huawei, RuStore)

๐Ÿ“ฑ What Users Get

  • Complete privacy: No internet, no data collection, no registration

  • Real depth: Full test versions (80-254 questions) or quick versions (20 questions)

  • Beautiful PDF reports: Share with coaches, therapists, or keep for self-reflection

  • Personal diary: Track your growth journey with reminders

  • All free: No paywalls, no subscriptions

๐Ÿš€ What's Next?

The architecture is ready for combined reports โ€“ cross-analyzing results from MindPath 16, MindPath 5D, and Enneagram in a single "Personality Compass" PDF. The IntegrationEngine is already in place, waiting for content.

๐Ÿ’ก Lessons Learned

  1. Offline-first is hard but worth it. Users appreciate privacy more than we think.

  2. Build modular from day one. My PDF section architecture saved me weeks when adding new features.

  3. Don't let trademarks limit you. You can build original models with similar depth โ€“ just do the work.

  4. Test-driven development saves sanity. Unit tests caught countless scoring errors.

๐Ÿ”— Links

๐Ÿ™ I'd Love Your Feedback!

Whether you're a developer curious about PDF generation, a psychology enthusiast, or just someone who cares about privacy โ€“ I'd love to hear your thoughts.

Questions for the community:

  • Have you built offline-first apps? What were your biggest challenges?

  • Would you use a tool like this for team-building or coaching?

  • Any features you'd like to see in future versions?

Happy to answer any technical questions about Flutter, PDF generation, or psychological model implementation!

Tags: #Flutter #OfflineFirst #Enneagram #SelfDiscovery #Privacy #IndieDev #MobileApp


25 views

Add a comment

Replies

Be the first to comment