GithubHelp home page GithubHelp logo

malkovks / forgetabouttasks Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 2.08 MB

:notebook: :pencil2: :date: Application with calendar notes for adding tasks and planning some objectives

Swift 100.00%
firebase fscalendar ios mvc mvvm realm realmswift snapkit swift task-manager tasks uikit widgetkit xcode

forgetabouttasks's Introduction

ForgetAboutTasks Application

Little Introduction. This application using only imported frameworks and SDK's, it depended on internet connection because of authorization. Also current application has two changable localization: Russian and English. For Russian user's standart localization is Russian,for others - English. All texts, alerts and other information are localized.

Stack of development:

  1. UIKit, SwiftUI;
  2. iOS 16+;
  3. MVC(MVVM);
  4. Realm;
  5. UserDefaults for settings and Keychain for user's authorization data;
  6. SnapKit;
  7. Firebase and Google Authentication;
  8. XCTests.

This app based on:

Application intended for:

  • Authorize user by creating account, login with previous created account or login with Google account;
  • Creating, Editing events on current day in two variations:
    • Adding events in calendar with displaying counts of event on every day;
    • Adding events to basic table view with variations of sorting,searching events as it necessary.
  • Creating contacts and duplicate them to system applications Contacts and also import contacts from the same application;
  • Customization of self user interface, regulate access to systems elemenets, editing with current account.

Main Objectives:

  1. User Authorization Module
  • AuthenticationViewController:
    • View for choosing variations of how to login for user. User can login to previously created account, create account or authorize with Google.
  • LoginViewController:
    • View for enter with earlier created account or reset account if user forget password.
  • ResetViewController:
    • View for reset up password. After confirming server send to user mail to his mailbox with confirming about changing password and sets up new password.
  • CreateNewAccountViewController:
    • View for creating account. User enter email as login, first password and repeat it again and user's name. After that if internet connection is good, server's send answer that's account is created.

;

  1. Schedule Module
  • ScheduleViewController:
    • View include calendar which display dots on day if on this day have any event or birthdays. Birthdays upload from contacts;
    • Search give access to find any event by name which ever was created;
    • List view present all event which has in current data base. Sorted by date.
  • CreateTaskViewController:
    • View display calendar week inline. At every days display table view with events which include at every row name, date and color of event;
    • Functions for editing chosen cells, delete and etc;
    • Display button at chosen day if has any birthdays. User can press to see who has any birthdays at current day.
  • DetailViewController:
    • View present event if user press before on cell. Show all details event. Give access to press on URL and open link if this value is not empty.
  • CreateEventScheduleViewController:
    • View has table view with 5 sections with different data. Even color of event, set image and other parameters.
  • EditEventScheduleViewController:
    • View same as CreateEventSchedule but give access to chosen model for editing.

  1. All Tasks Module
  • AllTasksViewController:
    • View display table view with lists of short events. Search using for searching events. Segmen controller give access to sort events.
  • AllTasksDetailViewController:
    • View display info about event with possibility to delete event, copy info from chosen row.
  • CreateTasksViewController:
    • View display table view with sections with fields of data and dates for filling.
  • EditTasksViewController:
    • View same as CreateTasksViewController, but work with chosen element of model and give access to change chosen value.
  1. Contacts Module
  • ContactsViewController
    • View display table view with search bar for filtering contacts. Navigation item give access to user's systems Contacts and give access to import chosen contacts to our application. By long gesture on chosen table view row give possibilty to interact with. Even edit button give access to interact with table view models and edits them.
  • CreateContactViewController
    • View display custom view with adding image from library or creating image and table view with textfields for filling.
  • EditContactViewController
    • View same as CreateContactViewController but for edit chosen contact.

  1. User Profile Module
  • UserProfileViewController
    • View display custom view with main information and image about user. Below is settings table view with huge perfomance for setting up application,password for entering in app,enabling animation,vibration, custom font and editing user's account.

  1. LockscreenWidget
  • LockscreenWidget
    • Widget include current date and counts. By pressing open ScheduleViewController

Below example of some main functions which user can switch and edit

Personal resolved tasks in App:

  • Start work with Firebase Auth, Analytics, Crashlytics;
  • Using combine for some different tasks;
  • Using module tests for testing some business logic methods and class methods;
  • Test work with UIColorPickerViewController;
  • Test sharing function of table view in snapshot or .pdf variations;
  • Huge work with extensions, MVVM pattern and other helpful tools for development;
  • Code review and comments for all important functions and class;
  • Work with different target in one project. Combining Swift and SwiftUI;
  • Success work with Realm Database;
  • Creating custom TabBarController with animation;
  • Huge implementation of animation and work with them;
  • Work with versions and .git versions;
  • Added full localization of application and it event changable if user want it;
  • Work with Haptics on iPhone when user make some action with application. It edited if user need to switch vibration;
  • Work with Keychain manager for save storing email and password;
  • Full autolayout with SnapKit only;
  • Completed work with SystemConfiguration for checking internet connection;
  • Work with WidgetKit and display number of events on current day in widget.

This project is non-commercial product. All rights reserved.

forgetabouttasks's People

Contributors

malkovks avatar

Stargazers

 avatar  avatar

Watchers

 avatar

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.