This is a Hacktzi Blog android app. The main purpose of this application is provide to the hacktzi community an easy way for sharing notes, documents, projects or any others useful resources.
This project has features which support our main goal which is sharing content, these are:
- Login
- Home
- News
- Project
- Post
- Activity
Name | Description |
---|---|
Application | Refers to hacktzi application, it control the main execution and initialize any important dependency |
Module layer | All the module inside module layer are the features for hacktzi application such as login, project, news, etc. Also, take in cosideration that a module can depends on another module |
Core Layer - UI Module | Module which contains all the resources such as theme, styles, strings, animations, drawables, etc which will be sharing to other modules |
Core Layer - Domain Module | Module which contains any common classes for businness logic in other modules (e.g. use cases, POJO class, etc) |
Core Layer - Data Module | Module which contains elements for data sources such as network objects, common responses from endpoints, data bases, entities, etc |
Feel free to contribute either by requesting or developing new features
- Clone the repo
- Create a branch off of development and give it a meaningful name (e.g. feature/login-ui, feature/login-data , etc )
- Open a pull request on GitHub and describe the feature, fix or post.
We are going to use udacity guideline
The main reason is that it provides a really good way to keep track of what each commit is actually trying to achieve. Also, try to commit every piece of code that you consider is important change.
The following structure will be used for every commit:
type: subject body (optional just in case a really deep explanation is needed)
The Type can be any of the following values:
Type | Purpose |
---|---|
feature | A new feature |
fix | A bug fix |
docs | Changes to documentation |
style | Formatting, missing semi colons, etc; no code change |
refactor | Refactoring code |
test | Adding tests, refactoring test; no production code change |
config | Updating build tasks, package manager configs, etc; no production code change |
Here is an example of what a commit would looks like:
feature: Add user and password inputs in login screen
More detailed explanatory text, if necessary. Explain the problem that this commit is solving. Focus on why you are making this change as opposed to how (the code explains that). Are there side effects or other unintuitive consequenses of this change? Here's the place to explain them.
The main programming language that this project will use is Kotlin. For coding style purposes, we are going to respect this guide: https://developer.android.com/kotlin/style-guide
Naming Convention
In order to make the code look consistent cross modules, we have decided to come up with naming conventions.
Item | Naming Convention | Example |
---|---|---|
Modules | hacktzi-<name> |
hacktzi-login |
Packages | <main_package> .<name> |
com.hacktzi.blog.login |
Android/Architecture Components | <name><component> |
LoginViewModel |
Arguments | ARG_<name> |
ARG_EMAIL = "email" |
Preferences | KEY_<name> |
KEY_EMAIL = "com.hacktzi.blog.email" |
XML Files | <what>_<description> |
|
Resource Strings | <what>_<description> |
|
Resource Drawables | <what>_<description> |
|
Resource Dimensions | {where}_<what>_{description} |
|
Resource Colors | <name>_<value> |
blue_light |
Resource View IDs | <prefix> + <description> |
Refer to the issues section: [https://github.com/HackTzi/app-blog-hacktzi-kotlin/issues]