A privacy-first iOS app for tracking personal nicotine consumption patterns. Built with SwiftUI, Core Data, and designed with zero data collection.
This app is for personal tracking purposes only and does not provide medical advice. It is not intended to promote, endorse, or encourage nicotine use. Nicotine is addictive and harmful to health. Please consult healthcare professionals for medical guidance regarding nicotine use or cessation.
- π Complete Privacy: Zero data collection - all data stays on your device
- π Usage Tracking: Log nicotine consumption with customizable amounts
- β±οΈ Live Activities: Real-time absorption tracking on Lock Screen and Dynamic Island
- π Interactive Charts: Visualize nicotine levels and usage patterns over time
- π Home Screen Widgets: Quick access and status overview
- π£οΈ Siri Shortcuts: Voice-activated logging with iOS Shortcuts integration
- βοΈ iCloud Sync: Optional sync between your devices (your personal iCloud only)
- π Dark Mode: Full support for iOS dark mode
- π± iPad Compatible: Optimized for iPad with iPhone-style interface
Screenshots will be added once the app is live on the App Store
- SwiftUI - Modern iOS UI framework
- Core Data - Local data persistence with CloudKit sync
- WidgetKit - Home screen widgets and Live Activities
- Charts - SwiftUI Charts for data visualization
- Shortcuts - Siri and iOS Shortcuts integration
- TipKit - In-app guidance system
- MVVM Pattern - Clean separation of concerns
- Core Data + CloudKit - Reliable local storage with optional sync
- No Third-Party Dependencies - Pure iOS frameworks only
- Privacy by Design - No analytics, tracking, or data collection
- iOS 17.0+ (iOS 18.0+ recommended)
- Xcode 15.0+
- Swift 5.9+
-
Clone the repository
git clone https://github.com/ConnorNeedling/nicnark.git cd nicnark -
Open in Xcode
open nicnark-2.xcodeproj
-
Configure App Group (Required for widgets)
- Update the App Group identifier in all targets
- Format:
group.YourTeamID.nicnark-2 - Update in
WidgetPersistenceHelper.swift
-
Update Bundle Identifiers
- Main app:
YourTeamID.nicnark-2 - Widget:
YourTeamID.nicnark-2.AbsorptionTimerWidget
- Main app:
- Shortcuts: (none) β App Intents are built into the main app target (no separate extension)
- Build and Run
- Select your development team in Xcode
- Choose your target device
- Build and run (β+R)
-
Enable Core Data CloudKit Sync (Optional)
- Configure CloudKit container in Apple Developer Portal
- Enable CloudKit in app capabilities
-
Configure Live Activities (iOS 16.1+)
- Activities are automatically configured
- Test on physical device (Live Activities don't work in Simulator)
-
Test Widgets
- Long-press home screen β Add Widget β NicNark
- Test timeline updates and data display
- Log a Pouch: Tap preset buttons (3mg, 6mg) or create custom amounts
- Monitor Progress: View real-time absorption countdown and progress
- Remove Pouch: Tap "Remove Pouch" when finished
- View History: Check the "Levels" and "Usage" tabs for historical data
- Widgets: Add to home screen for quick status overview
- Live Activities: Monitor active pouches on Lock Screen
- Siri Shortcuts: Create voice commands for logging
- Data Export: Use Settings β "Delete All Data" to clear everything
NicNark is built with privacy by design:
- β Zero data collection - We never see your data
- β Local storage only - All data stays on your device
- β No analytics or tracking - No third-party services
- β Optional iCloud sync - Uses your personal Apple account
- β No account required - No sign-up or personal information needed
- β Transparent code - Full source code available for audit
We welcome contributions! This is a community-driven project.
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- π Localization - Translate to other languages
- π¨ UI/UX Improvements - Better designs and user experience
- π Data Visualizations - New chart types and insights
- π§ Feature Additions - New functionality (must maintain privacy-first approach)
- π Bug Fixes - Report and fix issues
- π Documentation - Improve docs and guides
- Maintain privacy-first principles - no data collection
- Follow SwiftUI best practices
- Write clear, documented code
- Test on multiple iOS versions and devices
- Ensure iPad compatibility
This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License.
This means you can:
- β Use the code for personal projects
- β Modify and adapt the code
- β Share the code with others
- β Create derivative works
But you cannot:
- β Use the code for commercial purposes
- β Sell apps based on this code
- β Remove attribution to original authors
View License | Human-Readable Summary
- π Smart Inventory Alerts - Low inventory alerts now respect a 24-hour cooldown per can to prevent repetitive notifications
- π§ͺ Enhanced Testing - Added comprehensive unit tests for notification cooldown functionality
- π§ Improved Reliability - Better notification management and cleanup of stale alert records
- Apple Watch App - Native watchOS companion
- Export Data - CSV/JSON export functionality
- Usage Goals - Set and track reduction goals
- More Chart Types - Additional data visualizations
- Themes - Custom app themes and colors
- Advanced Analytics - Deeper usage insights
Have an idea? Open an issue and let's discuss it!
- π Documentation - Check this README and code comments
- π Bug Reports - Open an issue
- π‘ Feature Requests - Start a discussion
- π¬ Questions - Use GitHub Discussions for general questions
The official App Store version is maintained by Connor Needling and may include additional features or optimizations.
- Not Medical Software - This app is not intended for medical use
- No Warranties - Provided as-is with no guarantees
- User Responsibility - Users are responsible for their nicotine consumption decisions
- Compliance - Ensure compliance with local laws and regulations
- Apple - For the excellent iOS development frameworks
- SwiftUI Community - For inspiration and best practices
- Open Source Community - For making collaborative development possible
- Privacy Advocates - For promoting privacy-first software design
Connor Needling
- GitHub: @ConnorNeedling
- App Store: NicNark on App Store (coming soon)
Made with β€οΈ for the open source community