Skip to content

App nativa para Android del blog d HackTzi con Kotlin (versión beta)

Notifications You must be signed in to change notification settings

HackTzi/app-blog-hacktzi-kotlin

Repository files navigation

Hacktzi Blog

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.

Features

This project has features which support our main goal which is sharing content, these are:

  • Login
  • Home
  • News
  • Project
  • Post
  • Activity

Architecture

Android Architecture

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

Contribution

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.

GIT Commit Conventions

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.

Coding Style

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>
  • activity_login.xml
  • fragment_login.xml
  • dialog_change_password.xml (layouts for any kind of dialog)
  • content_login_header.xml (specific layouts to be used within other layouts)
  • menu_login.xml
  • view_login.xml (custom views XML base specification)
  • item_login.xml (items for lists)
  • Resource Strings <what>_<description>
  • text_username (Messages, warnings, descriptions)
  • text_hint_username (Default description that appears within any kind of input)
  • text_title_login (For titles/subtitles and any kind of header text)
  • Resource Drawables <what>_<description>
  • ic_user_profile_photo.xml (Images/Icons)
  • bg_rounded_blue.xml (Backgrounds / Selectors)
  • color_button_blue (Colors under color directory)
  • view_circle_loading.xml (Custom drawable views)
  • Resource Dimensions {where}_<what>_{description}
  • size_small
  • button_width_large
  • toolbar_height
  • notification_header_padding_top (Works for padding & margins)
  • text_size_small
  • Resource Colors <name>_<value> blue_light
    Resource View IDs <prefix> + <description>
  • ly + Login (Any kind of layouts such as Constraints/AppBar/Linear and so on)
  • btn + Login (Any kind of button, such as Button, ImageButton, RadioButton, ToggleButton and so on)
  • tv + Username (All sort of non-editable labels such as TextViews)
  • et + Username (All sort of editable text inputs such as EditTexts)
  • chk + Policy (All views that require a check/uncheck interaction such as CheckBoxes)
  • img + Photo (All views that are used to show images such as ImageViews)
  • Discusions

    Refer to the issues section: [https://github.com/HackTzi/app-blog-hacktzi-kotlin/issues]

    About

    App nativa para Android del blog d HackTzi con Kotlin (versión beta)

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Languages