This guide will help you get started with contributing to InnerPod, specifically focusing on the session recording and history features.
The session recording and history features you mentioned are already implemented in InnerPod! Here's what's working:
-
Automatic Session Recording
- Sessions are automatically saved when completed
- Data includes start time and end time
- Stored encrypted in user's Solid Pod
-
History Display
- View all past sessions in a table
- Shows date, start time, and end time
- Accessible via the History tab in the bottom navigation
-
Solid Pod Integration
- Uses
solidpodpackage from pub.dev - Data is encrypted and private
- Works offline (Pod connection is optional)
- Uses
| File | Purpose | Lines of Interest |
|---|---|---|
lib/widgets/timer.dart |
Timer & recording | 229-252 (_saveSession) |
lib/widgets/history.dart |
Display history | 31-60 (_loadSessions) |
lib/main.dart |
Entry & Solid login | 64-78 (SolidLogin) |
lib/home.dart |
Navigation | 110-113 (pages list) |
Windows Setup:
# 1. Download Flutter SDK
# Visit: https://docs.flutter.dev/get-started/install
# 2. Extract to C:\src\flutter
# 3. Add to PATH (PowerShell as Administrator)
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path",
"$currentPath;C:\src\flutter\bin", "User")
# 4. Restart terminal and verify
flutter --version
flutter doctorDetailed instructions: See .agent/workflows/setup-flutter.md
# Navigate to innerpod directory
cd c:\Desktop\innerpod
# Install dependencies
flutter pub get
# Check for issues
flutter doctor
# List available devices
flutter devices# For Windows desktop
flutter run -d windows
# For web browser
flutter run -d chrome
# For Android (with device/emulator)
flutter run -d androidI've created three comprehensive guides to help you:
Complete development documentation covering:
- Project architecture overview
- Session recording implementation details
- Solid Pod integration explanation
- Code structure and organization
- Testing strategies
- Contribution guidelines
When to use: Understanding how the app works, architecture decisions, and best practices
Enhancement ideas with implementation details:
- 10 potential improvements (from easy to advanced)
- Code examples for each enhancement
- Effort estimates and priority matrix
- Recommended implementation order
When to use: Planning new features, looking for contribution ideas
Step-by-step Flutter setup workflow:
- Installing Flutter SDK on Windows
- Setting up development environment
- Configuring PATH variables
- Verifying installation
- Running the app
When to use: Setting up your development environment
- Set up Flutter (use
/setup-flutterworkflow) - Run the app locally
- Explore the code:
- Read
lib/main.dartto understand app structure - Study
lib/widgets/timer.dartto see session recording - Review
lib/widgets/history.dartto see data display
- Read
- Test the features:
- Create a Solid Pod account (optional)
- Run a meditation session
- View the history tab
- Check the saved data
-
Fork the repository on GitHub
- Visit: https://github.com/gjwgit/innerpod
- Click "Fork" button
-
Clone your fork
git clone https://github.com/YOUR_USERNAME/innerpod.git cd innerpod -
Pick a quick win from SESSION_ENHANCEMENTS.md
- Recommended first task: Session Duration Display
- Estimated time: 30 minutes
- High impact, low effort
-
Create a branch
git checkout -b feature/session-duration
-
Implement the feature
- Follow the code examples in SESSION_ENHANCEMENTS.md
- Test thoroughly
- Commit your changes
-
Submit a Pull Request
- Push to your fork
- Create PR on original repository
- Describe your changes
# Install dependencies
flutter pub get
# Run app (Windows)
flutter run -d windows
# Build release
flutter build windows
# Run tests
flutter test
# Analyze code
flutter analyze
# Format code
dart format .innerpod/
├── lib/
│ ├── main.dart # App entry point
│ ├── home.dart # Main navigation
│ ├── widgets/
│ │ ├── timer.dart # ⭐ Session recording
│ │ └── history.dart # ⭐ Session history
│ ├── constants/
│ └── utils/
├── assets/ # Images & sounds
├── pubspec.yaml # Dependencies
└── README.md # Project info
solidpod: ^0.7.4 # Solid Pod integration
circular_countdown_timer: ^0.2.3 # Timer UI
audioplayers: ^6.1.0 # Audio playback
intl: ^0.20.2 # Date/time formatting1. User starts session
↓
2. App records start time
↓
3. Timer counts down
↓
4. Session completes
↓
5. App records end time
↓
6. Data saved to Pod (if logged in)
{
"start": "2026-02-09T10:30:00.000Z",
"end": "2026-02-09T10:50:00.000Z"
}
↓
7. History tab displays all sessions
Location: User's Solid Pod
File: sessions.json
Format: JSON array of session objects
Encryption: Handled by Solid Pod
Example:
[
{
"start": "2026-02-09T10:30:00.000Z",
"end": "2026-02-09T10:50:00.000Z"
},
{
"start": "2026-02-10T08:15:00.000Z",
"end": "2026-02-10T08:35:00.000Z"
}
]File: lib/widgets/history.dart
Change: Calculate and display session duration
Difficulty: 🟢 Beginner
File: lib/widgets/timer.dart
Change: Add 'type' field (start/intro/guided)
Difficulty: 🟢 Beginner
File: lib/widgets/history.dart
Change: Display total sessions, total time, average
Difficulty: 🟡 Intermediate
See SESSION_ENHANCEMENTS.md for detailed implementation guides!
- Flutter Docs: https://docs.flutter.dev/
- Dart Language: https://dart.dev/docs
- Solid Project: https://solidproject.org/
- InnerPod GitHub: https://github.com/gjwgit/innerpod
Q: Flutter command not found A: Restart terminal after adding to PATH, or run:
$env:Path += ";C:\src\flutter\bin"Q: Visual Studio required error A: Install Visual Studio 2022 with C++ desktop development workload
Q: How do I test without a Solid Pod? A: App works offline! Just click "SESSION" on login screen
Q: Where is session data stored locally? A: Only in Solid Pod. Without login, sessions aren't saved (by design)
- ✅ Set up Flutter development environment
- ✅ Run InnerPod locally
- ✅ Understand session recording architecture
- ✅ Pick an enhancement from SESSION_ENHANCEMENTS.md
- ✅ Implement and test
- ✅ Submit a Pull Request
- ✅ Celebrate! 🎉
- GitHub Issues: https://github.com/gjwgit/innerpod/issues
- Original Author: Graham Williams
- Project: Togaware
Happy coding! May your meditation sessions be peaceful and your code bug-free! 🧘♂️✨