As Blake Lab's first cultural-technology fusion experiment, PAPA is not just a technical showcase, but a practical action for indigenous digital transformation.
🎯 Project Origin: Real Tribal Pain Points
After last month's Amis tribal family gathering, I watched my cousin spend two full weeks handling financial settlements for over 50 people. Excel spreadsheets were passed back and forth in dozens of versions, while screenshots and questions flooded the LINE group chat. As a technical professional with 20 years of government project experience and 13 years of tribal immersion, I wondered: Could modern technology solve this traditional problem?
This wasn't my first time observing this pain point. From the Harvest Festival in Changguang Tribe in Taitung to various family gathering activities, I've consistently seen organizers overwhelmed by financial management. More importantly, this affects the essence of the events - gatherings that should strengthen relationships instead create tension due to money issues.
🔍 In-Depth Requirements Exploration (Culturally Sensitive Research)
Through deep interviews with 5 relatives who regularly organize family activities, I discovered key pain points:
Technical Layer:
Attendance changes causing budget overruns (last-minute additions/cancellations)
Multiple identity categories making fee structures complex (adults, children, infants with different rates)
Scattered receipt management making reconciliation difficult
Lack of real-time financial transparency
Cultural Layer:
Amis culture values collective decision-making and resource sharing
Traditional mutual aid spirit requires transparent financial mechanisms
Cross-generational participation needs low learning curve tools
Elders prefer simple, intuitive interfaces
💡 Product Vision Definition
PAPA (Pangcah Accounting for Party Activities) core philosophy:
Pangcah - Amis self-designation, representing cultural roots
Accounting - Accounting system, ensuring financial transparency
Party - Gathering activities, promoting community connection
Activities - Diverse applications, not limited to single scenarios
The goal is to create a registration-free, instant-use, transparent expense-sharing tool that allows everyone to easily organize activities and focus on human connections.
⚡ Battle-Tested Technology Stack Selection
Based on three core principles: "stable and reliable, efficient development, scalable flexibility," I chose a battle-tested technology stack:
# Backend Architecture - Django Ecosystem
backend_stack = {
"framework": "Django 5.0 + Django REST Framework 3.14",
"database": "PostgreSQL (Railway Cloud)",
"realtime": "Django Channels + Redis",
"deployment": "Railway.app",
"api_design": "RESTful API with JWT Authentication",
"advantages": [
"Mature and stable ORM system",
"Rich third-party package ecosystem",
"Excellent built-in security features",
"Support for complex business logic"
]
}
// Frontend Architecture - Modern React Technology
const frontend_stack = {
framework: "React 18 + TypeScript 5.0",
build_tool: "Vite 4.0", // Fast build
ui_framework: "TailwindCSS + Custom Components", // Cultural-friendly design
state_management: "React Query + Context API",
http_client: "Axios with interceptors",
deployment: "Vercel",
advantages: [
"Type-safe development experience",
"Excellent developer tooling support",
"Rich community resources",
"Suitable for rapid iteration"
]
}
Key considerations for this technology stack:
Development Efficiency: Django Admin for rapid management interface creation
Maintenance Cost: Mature frameworks reduce long-term maintenance burden
Scalability: Support for microservice architecture evolution
Team Collaboration: Standardized development patterns facilitate collaboration
🌟 Blake Lab's Technology×Culture Methodology
This development experiment validates our core hypotheses:
Technology Democratization: AI tools reduce prototyping time from weeks to days
Culture First: Deep understanding of usage context is more important than feature stacking
Policy Significance: Small tools reflect larger indigenous digital rights issues
Day 1 Actual Deliverables
✅ Completed requirements interviews and analysis documentation
✅ Established technical architecture and database design
✅ Initialized Django project with base configuration
✅ Designed core data models (Event, Group, Expense, User)
# Django Core Data Model Design
from django.db import models
from django.contrib.auth import get_user_model
class Event(models.Model):
"""Event model - corresponding to various Amis community gatherings"""
class EventStatus(models.TextChoices):
ACTIVE = 'ACTIVE', 'Active'
COMPLETED = 'COMPLETED', 'Completed'
CANCELLED = 'CANCELLED', 'Cancelled'
name = models.CharField("Event Name", max_length=200)
description = models.TextField("Event Description", blank=True)
start_date = models.DateTimeField("Start Time")
end_date = models.DateTimeField("End Time")
budget = models.DecimalField(
"Budget", max_digits=10, decimal_places=2,
null=True, blank=True
)
status = models.CharField(
"Status", max_length=10,
choices=EventStatus.choices,
default=EventStatus.ACTIVE
)
# Cultural-related fields
allow_split = models.BooleanField(
"Allow Split Bills", default=True,
help_text="Consider elders may not be comfortable with complex splitting"
)
# Relationships
group = models.ForeignKey(
'Group', on_delete=models.CASCADE,
related_name='events', verbose_name="Group"
)
creator = models.ForeignKey(
get_user_model(), on_delete=models.CASCADE,
verbose_name="Creator"
)
class Meta:
ordering = ['-start_date']
verbose_name = "Event"
verbose_name_plural = "Events"
class Expense(models.Model):
"""Expense record model"""
class ExpenseType(models.TextChoices):
EXPENSE = 'EXPENSE', 'Expense'
INCOME = 'INCOME', 'Income'
amount = models.DecimalField("Amount", max_digits=10, decimal_places=2)
type = models.CharField(
"Type", max_length=10,
choices=ExpenseType.choices,
default=ExpenseType.EXPENSE
)
date = models.DateTimeField("Transaction Date")
description = models.TextField("Description", blank=True)
# Relationships
category = models.ForeignKey(
'Category', on_delete=models.PROTECT,
related_name='expenses', verbose_name="Category"
)
event = models.ForeignKey(
Event, on_delete=models.CASCADE,
related_name='expenses', verbose_name="Event"
)
user = models.ForeignKey(
get_user_model(), on_delete=models.CASCADE,
related_name='expenses', verbose_name="Recorder"
)
class Meta:
ordering = ['-date']
verbose_name = "Expense Record"
verbose_name_plural = "Expense Records"
🚀 Next Steps Preview
Tomorrow I'll share the UX design process, demonstrating how to use AI tools to rapidly produce culturally sensitive user interfaces, including:
Cross-generational friendly operational workflows
Visual amount display methods
One-click social media integration features
This project is not just about programming, but building a bridge between culture and technology, allowing traditional wisdom to continue and develop in the digital age.
🚀 Blake Lab - Cultural-Technology Pioneer in the AI Era
💡 20 Years Government Projects | 🤖 AI Indigenous Applications | 🎯 Tribal Language NLP | 📈 Culturally Sensitive Design
🌐 wchung.tw | 📧 [email protected]
Follow Blake Lab to explore the infinite possibilities of technology and culture!
#BlakeLab #CulturalTechnology #PAPA #IndigenousInnovation #AIDevelopment #Amis #DigitalTransformation