Code Monkey home page Code Monkey logo

wolmo-core-android's Introduction

Build Status Release Coverage Status

WOLMO

WOLMO is a an opinionated framework designed to reduce the time taken to develop mobile applications by cutting off boilerplate code and offering MVP-ready fragments and activities while also providing utilities and helper classes for everyday tasks.

Design principles

  1. Opinionated: WOLMO is an opinionated framework. That means that we aim to define one "best way" of handling everyday tasks, including using certain third-party libraries, approaches and architectural decisions that we believe will make app development faster and easier.
  2. Modular: The framework delegates functionalities to modules designed specifically to fulfil their role.
  3. Mashable: WOLMO is an open source community-driven project intended for real life projects. Every contribution will be taken into account.

Modules

WOLMO is made up of several modules, each one supporting a different role in the production of modern apps. The following are the current modules available for the WOLMO framework.

  • CORE: This module provides standalone base classes and utilities of the framework. As a general rule, this module will be required in any WOLMO-based project. CORE is also a generally required dependency of other modules.
  • NETWORKING: This module provides offline capabilities and abstracts the network layer of the rest of the project.
  • AUTH: Provides utilities for accounts, login and signup features.
  • MAPS: Google Maps helpers classes and views.

Installation

Import the module as a library in your project using Gradle:

root build.gradle

allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}

your app module build.gradle

dependencies {
        compile 'com.github.Wolox:wolmo-core-android:master-SNAPSHOT'
}

Note: The above line will download the latest version of the module, if you want to run a specific version replace master-SNAPSHOT with 2.0.0 or any other version. Available versions can be found here: Github releases

Features

CORE is the base module of the framework and provides all of the must have classes and utilities. These modules define the opinionated character of the framework and may be used by other modules to fulfill their role.

Every module may depend on CORE, but not the other way around.

These features can be found in CORE:

  • MVP-ready activities and fragments
  • Files helpers
  • Camera and image helpers

See all the features available here.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push your branch (git push origin my-new-feature)
  5. Create a new Pull Request

About

This project is maintained by Juan Ignacio Molina and it was written by Wolox.

Wolox

License

WOLMO CORE is available under the MIT license.

Copyright (c) Wolox S.A

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

wolmo-core-android's People

Contributors

bdecorneliis avatar carovaldezg avatar dylan-muszel avatar erikemmanuelanrique avatar ffasitella avatar framundo avatar juanignaciomolina avatar karamchi avatar lisandrodimeo avatar lmiotti avatar lucheti29 avatar marcosnr97 avatar spicycactuar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wolmo-core-android's Issues

Multipurpose @Inject annotation

Problem

The @Inject annotation in Dagger is used both for requesting injection on a member and for declaring "injectability" in a constructor or method. Since these are two different tasks, we should have two different annotations.

Possible solution

Create two annotations:

  • @Injectable or @Injector: can only be used for methods and constructors to signify that calling them is a means of obtaining an instance to inject somewhere else
  • @Inject or @InjectMe: can only be used on fields to signify that they are expected to be injected an instance of whatever type they are

I think this would make the code a little cleaner. I would be glad to code this for wolmo-core-android, though I have no experience with Kotlin so far. I am open to suggestions on better names or alternative solutions.

Validation utilities

The idea is to extract common validation logic/patterns in order to facilitate form development.

I leave a couple of ideas:

Formalizing it up

I've looked solutions in other frameworks and platforms, and i arrived to one i like which is the Flutter approach.

It has a Form object which hooks the validation functions to the corresponding Views and emits only valid forms/fields.

The only downside i see to this approach is configuration wise. It's all done on the View's side. What i came up with for this is for the Presenter to provide the Form already constructed and then let the View hook up the necessary stuff. It's difficult to generalize, though.

Validators FTW

A more simple utility is providing Validator objects for the common cases in field validation. This was something @alvarez-fabian had started doing in GreenCommuter.

This is something i believe we should do regardless of the first idea because the validation logic is something that in 99% of the cases is repeated.

What do you guys think?

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.