NapChat is a social utility app designed to allow users to create sleep alarms that can send auto notifications to a group of friends to notify them that they are sleeping. As well this app can be used to track sleeping patterns and also as a personal sleep alarm. This app will target students for exam time, people with roomates, shift workers such as nurses doctors and people in trades. Also coaches for sports teams when on the road or nights before games to help tell their athletes when to sleep and when to wake up. Other applications could be wedding parties, family schedules, funerals, catching flights, business flights/trips.
ncalarms's Introduction
ncalarms's People
ncalarms's Issues
Delete Account functionality
Alarms and Notifications
- Create new alarm form UI
- Create alarm models
- Display created alarms on the Home tab
- Functionality for editing and deleting alarms
- Alarm functionality
Create skeletons for Options pages
Friend System
- Send friend request by referring to username.
- Add Friend Dialog. Enter their username. Confirm success or fail with custom toast.
- Receive friend requests. Be able to see these in the requests activity
- Accept/Decline friend requests
Create basic email / password sign up ability
Star-Gazer: Alarm System
Home Page Alarm List
- Displays
- Loads properly
- Updates properly
- Delete (need to get alarm id)
- Edit Alarm (need to get edit alarm page version of create alarm activity)
- Alarm type conversions
- Activate & Deactivate Alarm
- Add Alarm Button
Create Alarm
- Proper Firing time.
- Time Picker
- Vibrate
- Vibrate Patterns [heartbeat, buzzsaw, locomotive, flash dance]
- Repeat Days
- Ringtone
- Default
- Device
- Music
- Custom Ringtones
- Snooze
Repeating Alarm class
- Proper fire time/days.
- Dismiss
- toString Override.
AlarmController
- Schedule Repeating
- Cancel Repeating
- Cancel & Deactivate Repeating
- Snooze
- Dismiss
- AlarmActivity
Other
- AlarmReceiver
- OneTimeAlarm class
- toString Override.
AlarmBuilder
- OneTimeBuilder
- RepeatingBuilder
Misc.
- Fix SET_ALARM permission being denied when protection level is normal and should be granted at install if declared in Manifest.
Monetization
- Provide some kind of ad support through Firebase
- Provide a way to upgrade to a premium account without ads and access to beta content
Star-Gazer: Sleep Facts Page
This should be a carousel page in which users can view a picture/gif and a summarizing quote from an academic study related to sleep.
We want to gather a min of 10 facts about sleep and the citation to the academic study they are from. Try and save onto the links to access full study if found online. Post your findings below.
FACTS
- Fact - citation
Star-Gazer: UI Enhancement
Initial Round of improvements (layouts and colors)
- Login Activity
- Home Activity
- Sign-Up Activity
- Options Activity
- Create Alarm Activity
- Alarm Activity
- Launch Screen
- Logo
- Icons
- Pictures
Authentication/Account Management
STATUS
- Systems need testing to affirm everything works before closing issue.
TODO:
- Create User singleton and also initialize such a singleton on successful login.
- Reinforce email format in Login and Signup Activity with proper error messaging.
- Also in the change email in options.
- Just need to Raise min API to something above 8 in order to use the method.
https://stackoverflow.com/questions/9355899/android-email-edittext-validation?noredirect=1&lq=1
- Reinforce password format in SignUp Activity with proper error messaging.
- Email Verification.
- Rest Password from Options.
- Just need a button with some text for this in options.
- Change Email, Username from Options
- The methods to do these are in the Docs on Firebase, just need to create the UI elements to perform these.
- Forgot Password button/functionality on LoginActivity
- Just need to get custom dialog boxes to pop up.
- Delete Account
- User must re-authenticate in a dialog box in order to delete account.
- Change First Name & Last Name credentials to one Display Name or Username
- Logout needs to cancel any currently scheduled alarms. Should have a modal warning them of this when logging out.
- Modal
- Need to remove user data from RTDB when deleting account.
Friend System
Specifications:
Functionality
- Send invites to dl
- Send Friend requests.
- Receive Friend request
- Be able to accept/deny requests.
- Add friend to Group
- Remove Friend from group
UI Friends Fragment
- Friend tab
- Array adapter
- Unfriend option
- Add Friend option
- View details
- Group tab
- Create Group
- Edit Group
- Delete Group
- Array Adapter
- View details
From Firebase we need to look at Invites, Cloud Messaging
Notification System
- Attach contacts to an alarm to notify them.
- Attach context to alarm notifications.
- Provide awake time.
- Option to attach/detach contacts from the alarm list screen as well.
UPDATE
The contacts list is being read after the user presses the attach contacts button on the create alarm activity. However we need to create our own listview for contacts selection cause the android built in one only allows the selection of one. (Unless there are arguments we can pass but I didn't check this).
Right now we are populating a new activity by querying the contacts and for each contact we create a list view item for them that has a check box on it.
There is a bug querying and parsing through the contacts with the cursor rn. So once you fix that the activity should have all the contacts which they can pick multiple. Get the multiple selection (we only need display name and phone number) and return it the create alarm activity.
The activity should see that there are now contacts attached and display below the attach contacts button an option to provide context and a switch to provide awake time.
Creating the alarm will put the contact info in the appropriate alarm attribute (need to add to data model still).
...
Implement Forgot Password functionality (for vanilla auth)
Add facebook authentication
Analytics, Crash Reporting
Firebase Database & File Storage
Database
Use the Firebase documentation to set up the proper database configuration. (This is only for saving Friends list and groups list)
- Going with Realtime database option.
- https://firebase.google.com/docs/database/android/start/
- Save/update a friend from friend list
- delete of a friend from the friends list.
- Implement the save/update/delete of groups.
- Implement the save/update/delete of NapAlerts
- Save/update/removal of friend requests.
File Storage
Saving the alarms/user settings locally requires saving to a file.
- https://developer.android.com/training/data-storage/files.html
- https://developer.android.com/guide/topics/data/data-storage.html#filesInternal
NapChatController
We may change settings file to be stored in database depending on what it entails like block list or muted friends.
- Implement save/update user settings to file.
- Create (TBT)
- Save
- Load
- Implement save/update/delete user created alarms to file.
- Create user alarm file . (TBT)
- Save alarms (TBT)
- Load alarms
- Need to assert that the user settings and alarms are only returned if the proper user is currently signed in. If a brand new user is signed in we create a new directory for them.
- Delete data for a user when they delete their account. (TBT)
Google Login
Add Google authentication
Documentation and Testing
You are responsible for javadoc and unit/instrumentation testing for all classes/methods you create.
Facebook login
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.