NCS Oxygen (O2) is a project management Android app designed to streamline and optimize task and project management using modern project management techniques. With support for methodologies like sprints, kanban maps, and more, Oxygen empowers teams to efficiently plan, organize, and track their projects.
- Android SDK
- Kotlin Coroutine for Asynchronous tasks
- Workmanager Api
- AndroidX Jetpack for navigation
- Dagger/Hilt for dependency injection
- Retrofit/OkHttp/Gson for networking
- MVVM as architectural pattern
- SQLite/Room for local data storage
- Firebase Firestore, MongoDB as Cloud Databases
- Firebase storage, dynamic links
- Firebase cloud functions
- Django rest for Mailing system, webhooks
- Paging 3 for pagination
- Agile project management : Leverage sprint planning, backlog management, and task tracking to effectively manage projects using agile methodologies.
- Kanban boards : Visualize project progress and optimize workflow using customizable kanban boards.
- Task management : Create, assign, and track tasks for team members, ensuring clear accountability and progress monitoring.
- Collaborative workspace : Foster collaboration within teams by providing a shared platform for communication, file sharing, and discussions.
- Reporting and analytics : Generate insightful reports and analyze project performance to make data-driven decisions.
Task detail page provides comprehensive details about any task, including issue type, priority, duration, difficulty, status, position in kanban, fix in build version, story points, issue title, extensive issue summary with Markdown support, moderator list, and resource links for files, images, and video support.
Highlights:
- Issue Type, Priority, Duration, Difficulty, Status, Position in Kanban, Fix in Build Version, Story Points
- Issue Title
- Extensive Issue Summary with Markdown Support
- Moderator List
- Resource Links (Files, Images, Video)
Keep your workspace tidy and organized with our clean and segregated interface. Easily navigate between projects, tasks, and files without clutter.
Highlight:
- Enhance productivity by providing a clutter-free environment.
- Segregate tasks with filters for better focus and organization.
- Streamline workflow by reducing distractions, focus on schedules.
Effortlessly share project updates and communicate with team members through dedicated channel chats. Keep everyone informed and engaged in real-time discussions.
Highlight:
- Foster transparent communication by sharing updates in dedicated channels.
- Facilitate collaboration and idea sharing among team members.
- Ensure important information reaches relevant stakeholders instantly.
Efficiently plan your day by scheduling tasks for today. Keep track of all the tasks you need to accomplish, ensuring no deadlines are missed.
Highlight:
- Organize your daily workflow by prioritizing tasks for today.
- Stay focused and productive with a clear list of tasks to complete.
- Easily adjust and update your schedule as priorities change throughout the day.
Harness the power of O2Mate AI to automate the creation of tasks swiftly. Streamline your workflow by leveraging intelligent task generation.
Highlight:
- Save time and effort by automating the creation of tasks.
- Improve productivity by eliminating manual task creation processes.
- Leverage AI-driven insights to optimize task creation and allocation.
Task detail page provides comprehensive details about any task, issues which includes :
- Issue
Type
,Priority
,Duration
,Difficulty
,Status
,Position in kanban
,Fix in build version
,Story points
- Issue Title
- Extensive Issue summary with Markdown support
- Moderator list
- Resource links -> Files, Images, Video support
- Clear Code Presentation: The code viewer provides a clear and structured presentation of code snippets, enabling users to easily view, understand, and analyze code within the project management app.
- Syntax Highlighting: With syntax highlighting, the code viewer emphasizes different elements of the code, such as keywords, strings, and comments, enhancing readability and aiding in code comprehension.
- Interactive Features: The code viewer may include interactive features like line numbering, code folding, and search functionality, allowing users to navigate through code efficiently and locate specific sections with ease.
Utilize our flexible real-time chat system within tasks, enabling seamless communication among team members. Share links, files, and code snippets with support for syntax highlighting.
Highlight:
- Enhance collaboration by discussing tasks in real-time within the platform.
- Share relevant links and files directly within task discussions for easy reference.
- Collaborate on code snippets with syntax highlighting for improved readability and comprehension.
Enhance task management by adding checklists to tasks. Break down tasks into actionable steps and track progress more effectively.
Highlight:
- Improve task clarity by breaking them down into smaller, manageable steps.
- Ensure thoroughness and completeness by checking off items as they are completed.
- Increase accountability and transparency within the team by monitoring checklist progress.
Experience the convenience of our Kanban board for visualizing and managing your project workflow. Easily track tasks as they progress through different stages.
Highlight:
- Streamline project management with a visually intuitive Kanban board interface.
- Easy task management and reordering.
- Customize columns and labels to match your team's workflow for maximum convenience.
Stay updated with our notification tab, which keeps you informed of real-time updates, including task assignments, comments, and mentions.
Highlight:
- Stay informed of important activities and changes within your projects.
- Receive notifications for task assignments, comments, and mentions to stay engaged.
- Customize notification settings to control the type and frequency of updates you receive.
Receive push notifications directly to your devices for instant updates on important events and activities within your projects.
Highlight:
- Stay connected and informed even when you're not actively using the app.
- Receive instant alerts for task assignments, comments, and mentions.
- Enable/disable push notifications based on your preferences for optimal productivity.
Utilize our flexible search system to find tasks with atomic-level precision. Filter your search queries to narrow down results and locate specific tasks efficiently.
Highlight:
- Conduct granular searches to find tasks based on various criteria such as title, description, assignee, due date, and more.
- Utilize advanced filtering options to refine search results and pinpoint specific tasks.
- Enhance productivity by quickly locating relevant tasks without sifting through irrelevant information.
Description:
Easily access and view details of team members within the app. Get insights into their roles, responsibilities, contact information, and more.
Highlight:
- Access comprehensive profiles of team members to understand their expertise and contributions.
- View contact details such as email addresses or phone numbers for seamless communication.
- Stay informed about team dynamics and roles to facilitate collaboration and coordination.
Stay productive even without an internet connection with our offline mode feature. Access and work on your tasks seamlessly, even when offline.
Highlight:
- Continue working on tasks and projects without interruption, regardless of internet connectivity.
- Access cached data and synchronize changes once you're back online.
- Ensure productivity and efficiency, even in remote or low-connectivity environments.
Report bugs quickly and conveniently by shaking your device. Provide instant feedback to our development team for swift resolution of issues.
Highlight:
- Streamline the bug reporting process with a simple gesture.
- Encourage user participation in improving app stability and performance.
- Expedite bug fixes by providing timely and actionable feedback.
Oxygen has its own custom made crash reporting system called Crashman
which listens for unhandled exception and crashes, wraps them into an Oxygen issue and opens a thread under Issues for faster bug recovery by the Oxygen Team.
- Model classes should be located in a
model
package. - Network related classes and interfaces (e.g. networking api's) are located in a
remote
package. - Local storage related classes (e.g. databases or dao's) are located in a
local
package. - Classes that do not correspond to a certain feature, should either be located in an
all
package, anutil
package or at the top level of the module.
These rules can be applied to either whole modules or packages depending on if you have feature modules or feature packages. An example for such a module/package structure can be found here.
To get started with NCS Oxygen (O2), follow these steps:
- Clone the repository:
git clone https://github.com/arpitmx/oxygen.git
- Open the project in Android Studio.
- Build and run the app on an Android device or emulator.
All dependencies are located in the Libs.kt
file in the buildSrc
folder. To implement them use implementation Libs.XXX
.
Checking whether dependencies are ready to be updated, use ./gradlew refreshVersions
. Afterwards the newer version is added as comments to the versions.properties
file.
Every module should contain tests for its use cases:
test
: Write unit tests for everyViewModel
orService
/Repository
. Mockito or PowerMock can be used to mock objects and verify correct behaviour.androidTest
: Write UI tests for common actions in your app. Use JUnit 4 Tests with Espresso. Some helper methods are available in EspressoUtils.
The dependencies for testing are located in the gradle/test-dependencies-android.gradle
and gradle/test-dependencies.gradle
files. If your module
already implements gradle/library-module-android.gradle
or gradle/library-module.gradle
, then these dependencies are automatically added to the module
.
If your module does not implement these standard library gradle files, add the test dependencies with:
apply from: rootProject.file("gradle/XXX.gradle")
ktlint is a Kotlin linter and formatter. Using it is required to keep the code base clean and readable.
Use ./gradlew ktlintCheck
to lint your code.
To conform to the rules either:
- configure AndroidStudio accordingly.
- use
./gradlew ktlintApplyToIdea
to overwrite IDE style files. Read more here.
The goal of these conventions is to reduce the effort needed to read and understand code and also enable reviews to focus on more important issues than arguing over syntax.
Bold rules should be applied. Italic rules are optional.
Component | Rule | Example |
---|---|---|
Layouts | <what>_<where>.xml | activity_main.xml , item_detail.xml |
Sub-Layouts | <what>_<where>_<description>.xml | activity_main_appbar.xml |
Strings | <where>_<what>_<description> | detail_tv_location |
Drawables | <what>_<where>_<description> | btn_detail_background , card_overview_background |
Icons | ic_<description>_<where>.xml | ic_close.xml , ic_location_pin_detail.xml |
Dimensions | <where>_<what>_<description>_<size> | margin , detail_height_card , textsize_small |
Styles | <What>.<Description> | Text.Bold , Ratingbar.Preview |
Component Ids | <what><Description> | btnOpen , tvTitle |
- Kotlin
- Kotlin Coroutines
- Kotlin Flow
- Navigation Architecture Component
- ViewBinding
- control
- Koin
- Retrofit
- Room
Copyright 2023 Hackncs
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.