Showwcase is a professional network built for developers to connect, build community, and find new opportunities.

Overview

Showwcase

coverage style: very good analysis

Generated by the Very Good CLI πŸ€–

Showwcase is a professional network built for developers to connect, build community, and find new opportunities.


Getting Started πŸš€

This project contains 3 flavors:

  • development
  • staging
  • production

To run the desired flavor either use the launch configuration in VSCode/Android Studio or use the following commands:

# Development
$ flutter run --flavor development --target lib/main_development.dart

# Staging
$ flutter run --flavor staging --target lib/main_staging.dart

# Production
$ flutter run --flavor production --target lib/main_production.dart

*Showwcase works on iOS, Android, and Web.


Running Tests πŸ§ͺ

To run all unit and widget tests use the following command:

$ flutter test --coverage --test-randomize-ordering-seed random

To view the generated coverage report you can use lcov.

# Generate Coverage Report
$ genhtml coverage/lcov.info -o coverage/

# Open Coverage Report
$ open coverage/index.html

Working with Translations 🌐

This project relies on flutter_localizations and follows the official internationalization guide for Flutter.

Adding Strings

  1. To add a new localizable string, open the app_en.arb file at lib/l10n/arb/app_en.arb.
{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    }
}
  1. Then add a new key/value and description
{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    },
    "helloWorld": "Hello World",
    "@helloWorld": {
        "description": "Hello World Text"
    }
}
  1. Use the new string
import 'package:showwcase/l10n/l10n.dart';

@override
Widget build(BuildContext context) {
  final l10n = context.l10n;
  return Text(l10n.helloWorld);
}

Adding Supported Locales

Update the CFBundleLocalizations array in the Info.plist at ios/Runner/Info.plist to include the new locale.

    ...

    <key>CFBundleLocalizations</key>
	<array>
		<string>en</string>
		<string>es</string>
	</array>

    ...

Adding Translations

  1. For each supported locale, add a new ARB file in lib/l10n/arb.
β”œβ”€β”€ l10n
β”‚   β”œβ”€β”€ arb
β”‚   β”‚   β”œβ”€β”€ app_en.arb
β”‚   β”‚   └── app_es.arb
  1. Add the translated strings to each .arb file:

app_en.arb

{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    }
}

app_es.arb

{
    "@@locale": "es",
    "counterAppBarTitle": "Contador",
    "@counterAppBarTitle": {
        "description": "Texto mostrado en la AppBar de la pΓ‘gina del contador"
    }
}

Architecture 🏒

This project uses an adaptation of Clean Architecture designed especially for mobile application development with Fluttter.

Clean architecture is a set of principles whose main purpose is to hide implementation details from the application's domain logic.

In this way we keep the logic isolated, achieving a much more maintainable and scalable logic over time.

The main characteristic of Clean Architecture compared to other architectures is the dependency rule.

In Clean Architecture, an application is divided into responsibilities and each of these responsibilities is represented as a layer.

Layers in the application

Domain layer domain

The domain is the heart of the application and has to be totally isolated from any dependencies outside of business logic or data. The domain layer represents the implementation of what we know as a business model, or business logic. Business logic is that logic that would exist even if we do not have an application to automate the processes of a company. It is made up of the following elements.

Entities domain / entities

The entities contain the business data. The entities of an application could be shared between different applications within a company. Each entity is implemented as a class whose attributes correspond to the characteristics of the entity in the business model. Entities must not implement methods or any type of logic that is not related to the business model. Implementation details such as logic for decoding data returned by an API should not go in the entities, since the domain layer must be independent of the type of implementation made in the application.

Repositories domain / repositories

The repositories in the domain layer (also known as adapters) are in charge of establishing the interface that must be implemented in the data layer to obtain information. Repositories are the connection point between the data layer and the domain layer. It is represented only as an abstract class where the methods that must be implemented in the data layer are specified.

Data layer

Models data / models

The models extend the classes defined in domain / entities and implement the necessary methods to decode the information sent by the database or API, in this particular case they are in charge of transforming the information sent in json format by the API in the object (entity) that corresponds to it. They can also contain methods to encode the information in the appropriate format in case it is necessary to send information to the API.

Data sources data / datasources

The datasources are the classes in charge of making http requests to the API or directly interacting with a database. They use the models to decode and encode the information.

Repositories data / repositories

The repositories in the data layer are responsible for implementing the repositories that were previously defined in the domain layer, they use the datasources to perform the necessary data manipulation. The reason that repositories do not make requests directly to the API is to guarantee decoupling that allows us to change one data source for another or use multiple data sources within a repository without changing the entire repository implementation. It also allows testing the implementation of repositories and datasources independently.

Presentation layer

The presentation layer contains everything related to the application UI and its structure can vary. This layer uses the repository definitions exposed by the domain layer to carry out its operations.

Advantages of using Clean Architecture

The main advantages of using Clean Arcchitecture are:

  • Independence from Frameworks. It is not coupled to libraries, which allows these libraries to be used as tools that are easily replaceable.

  • Testable. Layers and their components are easily testable without using the user interface, database, web server, etc.

  • Independent of user interface. The user interface is easily replaceable, it allows updates both in

You might also like...

Some built-in live templates support developers to use Flutter Riverpod faster on Intellij based

Flutter Riverpod live templates Flutter Riverpod live templates is a way to enhance the way you use Riverpod. It contains a collection of different sn

Dec 16, 2022

Pig Community Mobile Application

Hello Fellow Pigsters Pig Community Mobile Application Getting Started This project is a starting point for a Flutter application. A few resources to

May 21, 2021

Let's makeover your backyard with the power of community

Let's makeover your backyard with the power of community

Backover Let's give our backyard a makeover! ✨ 25 out of 30 people are usually pretty unhappy about how their backyard looks. Even if some people like

Dec 28, 2022

This is an official mobile app for community classroom

Community Classroom Mobile app This repository contains code for mobile app of community classroom. Architecture to be followed for each feature: We a

Nov 20, 2022

Application of Community for students

small_talk An Anonymous Community for Teenage Student Getting Started This project is a starting point for a Flutter application. A few resources to g

Dec 10, 2021

Actively maintained, community-driven chat UI implementation with an optional Firebase BaaS.

Actively maintained, community-driven chat UI implementation with an optional Firebase BaaS.

Flutter Chat UI Actively maintained, community-driven chat UI implementation with an optional Firebase BaaS. Flyer Chat is a platform for creating in-

Jan 7, 2023

Community WebView Plugin - Allows Flutter to communicate with a native WebView.

NOTICE We are working closely with the Flutter Team to integrate all the Community Plugin features in the Official WebView Plugin. We will try our bes

Dec 22, 2022

PaperClip - A trading, community based mobile platform.

PaperClip - A trading, community based mobile platform.

PaperClip A trading, community based mobile platform. Getting Started This project is still under development and will not be released in public. The

Mar 20, 2022

It is a simple group chat application made with flutter back-end by Firebase. People can chat like a community chat.

flash_chat A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if th

Aug 7, 2022
Owner
Luis Ciber
Computer Scientist. Software Developer. Learning Machine.
Luis Ciber
This app is a center to various events ranging from portraying the member’s achievements to announcing the upcoming opportunities

This app is a center to various events ranging from portraying the member’s achievements to announcing the upcoming opportunities. Additionally, this app developed by the community, and for the community, will add elegance. Plus, being as an open source project, this will be a golden opportunity for beginners to learn and contribute to it just like a cherry on the cake.

Smaranjit Ghose 70 Oct 24, 2022
Plaso Connect is an application which acts as a one-stop solution where the people requiring blood plasma/oxygen can directly find and contact the donors and healthcare units as per their requirements

PLASO CONNECT - The Lifeline A one-stop platform for COVID relief resources -- Connecting patients with Plasma donors and oxygen suppliers. Built for

Niloy Sikdar 11 Oct 28, 2022
Tesla Connect build in Flutter

Tesla Connect Its build-in Flutter Screen Door lock. Battery. Temperature. Tyre Status. In App Download You can download the latest installable versio

Hoang Son 4 Nov 26, 2021
a software to connect you and your friends and others, are you guys also just tensed over the overuse of social media so we have a solution, appx (name not decided yet)

appx a software to connect you and your friends and others, are you guys also just tensed over the overuse of social media so we have a solution, appx

null 8 Jun 9, 2022
a software to connect you and your friends and others, are you guys also just tensed over the overuse of social media so we have a solution, sociio

APPX A software that will allow you to connect with your friends and family ! Are you guys also tensed over the over-use of social media ?? We have a

null 8 Jun 9, 2022
A new Flutter Application to control self build lamps for my personal use.

A new Flutter Application to control self build lamps for my personal use. You need extra hardware & software for getting this project running. This is just the code of the App.

null 1 Mar 2, 2022
This is a Flutter project inspired by sustainability and powered by the community

This is a Flutter project inspired by sustainability and powered by the community. TrashTrack is a demo of a social platform with geolocation features that brings people a new way of collaboration.

David 0 Oct 31, 2021
Web3 Ethereum, Etherjs and Wallet Connect wrapper for Flutter Web.

flutter_web3 This is a fork of flutter_web3_provider. Be sure to check out the original package. Introduction flutter_web3 v2 is full Dart class and f

yoisha 105 Jan 2, 2023
An app to help students and teachers connect each other.

korek An app to help students and teachers connect each other. Technologies: Project is created with: React.JS (Typescript) Express (Typescript) Flutt

Bruno DziΔ™cielski 3 Jan 10, 2022
DoneIt is a sample note app πŸ“ Flutter application πŸ“± built to demonstrate use of Clean Architecture tools. Dedicated to all Flutter Developers with ❀️.

DoneIt ?? DoneIt is a sample note app ?? Flutter application ?? built to demonstrate use of Clean Architecture tools. Dedicated to all Flutter Develop

Shubham Chhimpa 175 Dec 24, 2022