Coder Social home page Coder Social logo

dayssince's Introduction

DaysSince

DaysSince is an iOS app that helps you count the days that passed since you last did the things important to you! ๐Ÿ•ฆ๐ŸŒฑ

You can find it on the App Store ๐Ÿ‘‡:

https://apps.apple.com/us/app/days-since-track-memories/id1634218216

Features

With DaysSince you can:

  • Create new events to keep track of
  • Count the days since you've last done an event
  • Receive reminders (daily, weekly, monthly)
  • Customize your events into categories with different colors.
  • Widgets to display your events on your home screen.
  • Custom color themes
  • 5 different app icons
  • Create your own custom categories
  • Request and vote for new features

Getting Started

Make sure you fulfill the requirements.

Requirements

  • iOS 16.4+
  • Xcode 14.3+
  • macOS Ventura 13.0 or later

Deployment

You can download the app from the App Store here.

You can clone this github repository on your computer and open it with Xcode. Or you can directly click on "Open with Xcode" from Github (see image below).

Open with Xcode from Github

Once you open the project in XCode, no additional set up is needed. Use the standard steps to:

  • Build the project (Command+B)
  • Run the project (Command+R)

Testing

Please test all of your code before making a PR. There are no in-built unit tests right now.

Usage

Watch the demo videos of Days Since here:

Architechture

  • The project doesn't have a database. All events and settings are stored in UserDefaults. This is done using the external Defaults package.
  • There is a weak separation in terms of Model and View.

Libraries and Frameworks

  • Defaults for storing all user data. It is basically a sugar coated UserDefaults.
  • WishKit for colleting using feedback. Users can suggest or vote for new features.

Design

  • All design and brainstorming is done in Sketch. Please contact Vicki (see Meta info section) if you want to be added to the Sketch project.
  • The app icons were designed using Figma.

Team task collaboration tools

Right now it is only Vicki working on the project. There are no external tools (i.e Jira). You can keep track of tasks using the Issues tab on Github.

Contribute

We would love it if you contribute to Days Since. You can see some of the open Issues on Github and make a PR.

Workflow

Reporting bugs:

If you find a bug please contact Vicki (see Meta Info section) or directly open a new issue with a description and screenshots of the bug.

Submitting pull requests:

If you made a bug fix or a feature contribution, please submit a pull request and request Vicki as a reviewer. Please make sure your code is tested and clear.

Providing feedback: Any feedback is much appreciated!๐Ÿ˜Š๐Ÿš€ Please contact Vicki (see Meta Info section) or open new issues on Github.

Improving documentation: If you see missing documentation info or something that is not clear, please open an issue or submit a pull request.

Meta Info

Victoria Petrova - Contact me on X here - [email protected]

Jordi Bruin - Contact me on X here

dayssince's People

Contributors

jordibruin avatar saurabhjamadagni avatar teeeeeegz avatar vickipetrova avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

dayssince's Issues

Improve Readme

This is currently a very short 17 lines. You can spend several hours here providing all the information that a new dev joining your team would need to know.

Keyboard dismiss options for 'Add Event' form

Hi @jordibruin @vickipetrova :)

I recently downloaded Days Since. I really enjoy the app. Saw many apps that count down to a particular day but hadn't come across one that counts down from an important memory. Coupled with the UI it's such a fun app.

Raising this issue as I noticed a tiny tweak that could be made to the AddItemForm. It is about dismissing the keyboard. The natural instinct with most apps has become to swipe down to dismiss the keyboard, or pressing the 'Done' key in the toolbar.

daysSince

Although 'Return' does dismiss the keyboard, I felt implementing the swipe gesture and or the done key might be a nice tweak to the experience. As of right now a downward swipe dismisses the form and if done by mistake could make the user have to retype the event.

It's super trivial and I absolutely don't mean to be picky. Let me know if you think it would be a good addition and if I could work on it. I would love to contribute.

Investigate "Cannot use Morphun" message

After this PR, I started getting a new log message that I hadn't seen before but I couldn't;t figure out what the cause is:
2023-10-14 18:54:15.713011+0300 DaysSince[29289:631822] [Inflection] Cannot use Morphun (Checking that the token is the correct type): (null)

I'm not sure if it's new or if I hadn't noticed it before.

Migrate Model to Swift Data

It would be able to store the data using Swift Data
Will allow:

  • iCloud sync
  • Store Images
  • Better than having everything in user defaults
  • Also will be working with classes and not structs -- would simplify some item updates

Challenges:

  • Would have to figure out how to migrate the current data from user defaults to swift data.
  • Loads of work to rewrite the whole code, but would be cleaner at the end.

Investigate file structure

I think something is wrong with the structure of the app but I couldn't figure it out. It seems that there is an additional Days Since folder inside of the Days Since folder. Also the structure of the files in terms of folders is different when seen from the founder/github and when opened in XCode (for example the folder Screens appears in XCode but not in when the folder is opened from founder/github).

Emit metrics

Track some metrics (i.e. what app icons users choose, when they click the button to add a new event)

Improve the color comparison

The color comparison works in a hacky way right now and this can be improved.

In the ColorThemeView to check which color theme is currently selected, the mainColor and backgroundColors of the color theme rectangle and the Default variables are compared. However, this didn't work well with the simple == operator because Swift interprets them differently for some reason. A little hack to get around this was that Swift compares them as expected when the color is made .lighter() or .darker(). So I made at least one of the colors lighter and darker and used the OR operator for the comparison.

This should be solved to use the AND operator. Investigate why the .lighter() or .darker() extensions help Swift compare the two colors and improve the colorEqualsfunction in the ColorThemeView.

Backlog

I use this place to keep track of improvements I want to make that are too small to be their own separate issues.

  • Improve the category form section (not a list - make it in a panel with bigger emojis or something nicer)
    image

Maybe it can look more like this with the emoji and the name under it:
image

  • Let users be able to choose from many SFSymbols for the categories instead of hardcoding a limited number of them. Maybe they can be in a. horizontal scroll view or something like that
    image

  • Delete the CategoryRectangleView and the CategoryGridView. I'm not sure where they were used before and why they were commented out. I think they can be fully deleted but not 100% sure.

  • Store more of the values in Defaults -- for example the detailedModeView variable can be stored and passed around using Defaults

  • Fix all of the previews - I broke many of them

  • Add a way to delete existing event cards by sliding on them -- that would be nice
    Widgets: if a user has selected the detailed mode view (year, month, days), we also want to show it that way on the widgets --> to do this we can store the isDetailedModeEnabled in the app storage (with the defaults package) and also access that variable in the widgets
    The onboarding screen where users have to create their first event is confusing

  • remove the side spacers from the context menu on long press gesture
    IMG_8389

  • widgets: the alignment when the time is not detailed displayed is .leading, otherwise .center, fix that

  • category filtered view: the top event is cut off by the top navigation bar for some reason, maybe add more padding to the bar or to the event cards

  • users can choose to see time in weeks, years, months, etc.

  • Fix sheet error from this PR #40

  • Allow users to change the order of categories

  • Allow users to change the order of events -- tried this but something goes wrong, no longer able to edit a tapped item, need to figure this out

Notifications Bug

Users are experiencing bugs with their notifications:

  • When an event is deleted their notifications don't stop
  • Sometimes they don't get notifications

ToDo: Investigate and fix. It's probably something in the NotificationManager class.

Fix Lint Warnings

Investigate and resolve warnings. I don't know what either of them means.

There are 2 current warnings from within XCode:

  1. Update to recommended settings
image 2. image

Define your own categoreis

Being able to define your own categories instead of only being able to choose from the 4 preset categories.

Add photos to events

Easy Date Change

We need to figure out how to store the photos. It wouldn't be possible to use user defaults. Explore Swift Data.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.