Skip to content

bigc0127/NicNark-2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

109 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NicNark 🚭

iOS Swift License

A privacy-first iOS app for tracking personal nicotine consumption patterns. Built with SwiftUI, Core Data, and designed with zero data collection.

⚠️ Important Disclaimer

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.

✨ Features

  • πŸ”’ 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

Screenshots will be added once the app is live on the App Store

πŸ› οΈ Technical Details

Built With

  • 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

Architecture

  • 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

Requirements

  • iOS 17.0+ (iOS 18.0+ recommended)
  • Xcode 15.0+
  • Swift 5.9+

πŸš€ Getting Started

Installation

  1. Clone the repository

    git clone https://github.com/ConnorNeedling/nicnark.git
    cd nicnark
  2. Open in Xcode

    open nicnark-2.xcodeproj
  3. Configure App Group (Required for widgets)

    • Update the App Group identifier in all targets
    • Format: group.YourTeamID.nicnark-2
    • Update in WidgetPersistenceHelper.swift
  4. Update Bundle Identifiers

    • Main app: YourTeamID.nicnark-2
    • Widget: YourTeamID.nicnark-2.AbsorptionTimerWidget
  • Shortcuts: (none) β€” App Intents are built into the main app target (no separate extension)
  1. Build and Run
    • Select your development team in Xcode
    • Choose your target device
    • Build and run (⌘+R)

Development Setup

  1. Enable Core Data CloudKit Sync (Optional)

    • Configure CloudKit container in Apple Developer Portal
    • Enable CloudKit in app capabilities
  2. Configure Live Activities (iOS 16.1+)

    • Activities are automatically configured
    • Test on physical device (Live Activities don't work in Simulator)
  3. Test Widgets

    • Long-press home screen β†’ Add Widget β†’ NicNark
    • Test timeline updates and data display

πŸ“– Usage

Basic Tracking

  1. Log a Pouch: Tap preset buttons (3mg, 6mg) or create custom amounts
  2. Monitor Progress: View real-time absorption countdown and progress
  3. Remove Pouch: Tap "Remove Pouch" when finished
  4. View History: Check the "Levels" and "Usage" tabs for historical data

Advanced Features

  • 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

πŸ”’ Privacy

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

Read our Privacy Policy

🀝 Contributing

We welcome contributions! This is a community-driven project.

How to Contribute

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Areas for Contribution

  • 🌍 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

Development Guidelines

  • 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

πŸ“ License

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

πŸ†• Recent Updates

Version 2.0.1

  • πŸ”” 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

🎯 Roadmap

Planned Features

  • 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

Community Requests

Have an idea? Open an issue and let's discuss it!

πŸ†˜ Support

Getting Help

  • πŸ“– Documentation - Check this README and code comments
  • πŸ› Bug Reports - Open an issue
  • πŸ’‘ Feature Requests - Start a discussion
  • πŸ’¬ Questions - Use GitHub Discussions for general questions

App Store Version

The official App Store version is maintained by Connor Needling and may include additional features or optimizations.

βš–οΈ Legal

  • 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

πŸ™ Acknowledgments

  • 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

πŸ“§ Contact

Connor Needling


⚠️ Health Warning: Nicotine is addictive and harmful to health. This app does not provide medical advice. Consult healthcare professionals for guidance on nicotine use or cessation. This project does not endorse or promote nicotine use.

Made with ❀️ for the open source community

About

Privacy focused, full featured, Personal Nicotine consumption tracker

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages