NextPhoto - A Flutter Instagram look-alike photo blog application

Related tags

Templates dart flutter
Overview

Build codecov

NextPhoto

A Flutter Instagram look-alike photo blog application. Uses jsonplaceholder for mock data. Please refer to coding task for info about desired features.

🚧 Still under development. 👷‍♂️ 🚧 So not all things are finished or polished yet.

alt text

Table of contents

Coding task

Create the following Flutter app:

  1. Create Infinite scroll list with images (use https://jsonplaceholder.typicode.com photos as API source)
  2. Each image in the list has a title, an image preview and a like button.
  3. By tapping on a preview image user is shown a full-sized image in a popup.
  4. User can like and unlike images by tapping Like button.
  5. Like state persist between app launches.

Implemented functionality

These is the list of all app features available to the user as of now:

  • Fetching photos.
  • Liking and unliking photos.
    • Each like state for a photo is persisted between app launches.
  • Full photo view.
    • After clicking on a photo a separate image view is opened with zoom functionality.
  • Photo list refresh.
    • The photo data is refreshed each time the list is dragged from the top.

Other functionality is either mocked, placeholders or unused for now.

Figma design

The figma design file that was prepared by me for this app can be found here.

Web demo

The live web demo version of the app can be found here.

Project structure

The project's main src module contains 4 submodules:

  • app - contains code responsible for configuring and running the application.
  • base - contains components that can serve as a basis for any flutter project.
  • common - contains reusable components that are project specific and can be shared by many separate features.
  • features - contains modules for all the app's main features.

Module structure

Each module follows strict layer segregation. Three main layers are defined:

  • data - manages the application logic related to communicating with the network, retrieving & sending data, managing local storage etc.

  • domain - is dedicated to business level logic.

  • presentation - is responsible for presenting data to screen and handling user interactions.

Flutter version

This app was developed and tested on the following flutter channel and version:

Flutter 3.0.0  channel stable  https://github.com/flutter/flutter.git
Framework  revision ee4e09cce0 (7 days ago)  2022-05-09 16:45:18 -0700
Engine  revision d1b9a6938a
Tools  Dart 2.17.0  DevTools 2.12.2

Running the app

If you want to run the app using the terminal:

  • Debug & Development
flutter run --flavor dev lib/src/main_dev.dart
  • Release & Production
flutter run --release --flavor prod lib/src/main_prod.dart
  • Web
flutter run -d chrome --web-renderer html -t lib/src/main_dev.dart
  • MacOS, Windows, Linux
flutter run -d macos|windows|linux -t lib/src/main_dev.dart

Tests

Run unit tests by typing:

flutter test

Run integration tests by typing:

flutter test integration_test --flavor=stage

Index files

To update the list of files included in documentation for base, common and features libraries code generation with index_generator is used.

To activate index_generator run:

flutter pub global activate index_generator

To update index files run:

flutter pub global run index_generator

Right now the libraries app and di don't use code generation as they are small and usually don't change in terms of included files.

Documentation

Documentation for the whole app can be found here. Generate it on your own by running:

flutter pub global run dartdoc 

Code coverage

To generate code coverage reports run:

dart pub global activate remove_from_coverage
flutter test --coverage 
remove_from_coverage -f coverage/lcov.info -r '.g.dart|.freezed.dart$|\bgenerated\b'
genhtml coverage/lcov.info -o coverage/html

App icon

To change the app icon on mobile change the files inside launcher_icon and then run:

flutter pub get
flutter pub run flutter_launcher_icons:main -f flutter_launcher_icons-development.yaml

Running it for one file will run it for all flavors.

You might also like...

A Very Good Blog App using Flutter, flutter_bloc, django rest framework for backend✨

A Very Good Blog App using Flutter, flutter_bloc, django rest framework for backend✨

Very Good Blog App - Blog sharing Features Login, register, manage personal information. Compose, edit, post blog to share with everyone. Like, save b

Nov 27, 2022

Blog Club | Flutter UI Challenge

 Blog Club | Flutter UI Challenge

Blog Club | Flutter UI Challenge Create navigation like Instagram app navigation Increase performance and reduce memory consumption when scrolling bet

Aug 16, 2022

Simple app that fetches data from a WordPress blog

Simple app that fetches data from a WordPress blog

Wordpress Blog App A simple Flutter Blog Application, which fetches data from naijatechguy.com, which is a blog, using the blog api. Still working on

Nov 23, 2022

Blog app v2 Clean Architecture With MVVM

Blog app v2 Clean Architecture With MVVM

blog_app_v2 An initial blog app on my repo refactored and built with clean archi

Nov 6, 2022

This is my personal blog dashboard concept.

Blog Post dashBoard. Visit Live App here This is my personal dashBoard project made with flutter. Surely there's still room for more, so any sort of c

Dec 3, 2022

Flutter photo - video from album by flutter

Flutter photo - video from album by flutter

archived The package is archived. Please use flutter_wechat_assets_picker. photo image picker, multi picker support ios icloud support video use flutt

Dec 8, 2022

Google I/O 2021 Photo Booth built with Flutter and Firebase

Google I/O 2021 Photo Booth built with Flutter and Firebase

I/O Photo Booth A Photo Booth built with Flutter and Firebase for Google I/O 2021. Try it now and learn about how it's made. Built by Very Good Ventur

Dec 29, 2022

A Flutter plugin to rotate, resize, move, delete text, photo or any other widget.

A Flutter plugin to rotate, resize, move, delete text, photo or any other widget.

sticker_view A Flutter plugin to rotate, resize, move, delete any text, image or any other widget. Available Features ✅ Rotate ✅ Resize ✅ Move ✅ Layer

Nov 26, 2022

A Fluttter based notes app with photo-notes support!

A Fluttter based notes app with photo-notes support!

Tizeno Tizeno is a beautiful open-source notes app for Android. It is built with Dart on top of Google's Flutter Framework. Tizeno helps one create qu

Nov 10, 2022
Releases(v0.0.3)
Photo Finder - Online free simple photo library with flutter

photo_finder Photo_Finder Is a Online free simple photo library. Fully API Based

CPAD-Gazipur 2 Feb 9, 2022
Ubuntu Yaru Style - Distinct look and feel of the Ubuntu Desktop

Ubuntu Yaru Style - Distinct look and feel of the Ubuntu Desktop Using Yaru To be able to use this package follow this steps: Installation Make you su

Ubuntu 226 Dec 28, 2022
A Todo app with full fledge functionality and Awesome Look and feel.

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

Naveed kaimkhani 4 Aug 5, 2022
Instagram-clone - Instagram clone built using flutter and Firebase

Instagram-clone statistics of Firebase usage User Authentication for Instagram l

null 5 Jul 18, 2022
A photo gallery mobile application with Flutter.

Photo Gallery Photo Gallery mobile application. Description Photo Gallery is a cross platform mobile application made with Flutter. This application u

null 4 Dec 23, 2022
Responsive Blog Theme using Flutter | Web, macOS, Android, iOS

Responsive Blog Theme using Flutter | Web, macOS, Android, iOS Watch it on YouTube Packages we are using: flutter_svg: link get: link Flutter recently

Abu Anwar 196 Dec 9, 2022
Flutter custom carousel slider - A carousel slider widget,support custom decoration suitable for news and blog

flutter_custom_carousel_slider A carousel slider Flutter widget, supports custom

Emre 40 Dec 29, 2022
Responsive Blog Theme using Flutter

Responsive Blog Theme using Flutter | Web, macOS, Android, iOS Watch it on YouTube Packages we are using: flutter_svg: link get: link Flutter recently

Rakesh Prajapat 11 Dec 25, 2022
Flutter Blog App with NodeJS Express MongoDB

Flutter Blog App with NodeJS Express MongoDB This app is developed to learn creating RestAPI and implementing in Flutter App. That's why the UI of thi

Waqar Ali Siyal 13 Oct 18, 2022