Slibro is a full-fledged story writing and publishing platform that supports short and long format stories

Overview

Slibro Codemagic build status

Slibro is a full-fledged story writing and publishing platform that supports short and long format stories. Flutter, Appwrite, and Rapyd is used to create this amazing cross-platform experience. Though I have focused mainly on the mobile side for building the UI and made sure it's a nice to use on small sized devices.

Try out the app on Android from here.

Usage

To run this from your system, you should have:

  1. Flutter SDK installed and configured on your system.

  2. Setup Appwrite using Docker.

  3. Host the server locally using ngrok.

  4. Under lib directory, create a secrets.dart file, and add the server URL and Appwrite project ID to it. Example:

    class Secrets {
      static String hostname = 'https://127b-203-163-244-125.in.ngrok.io/v1';
      static String projectID = '6276341092e81e829ab0';
    }
  5. Create a Rapyd developer account.

  6. Get the Rapyd Sandbox API key and secret.

  7. Add them to the secrets.dart file and use them inside the Rapyd Flutter SDK.

  8. Run using the following command:

    flutter run

** The Dart code of the Flutter app is present inside the lib directory (in case you want to check out or review the code).

App Overview

The app now has full-fledged story editor (rich text - markdown), story reader, and story management system (to manage published/unpublished stories and explore other publisher's stories).

Some glimpses of Slibro's user interface are as follows:

Slibro Auth Screens

The above four screens cover the authentication flow on the app using email/password method. These screens help a user to either create a new account or login using an existing account. Once a user signs up to the app, it navigates to the story creation flow.

On a successful registration, a new user is created on Appwrite and a corresponding customer is created on Rapyd.

Slibro Story Detail Screens

Once authenticated, there are two options - either start writing a new story right away, or navigate to the dashboard of the app.

If the user selects "Start Writing" - the next two screens help a user to create the first story as a draft in the Slibro app. The user can also publish the story following the flow.

Slibro Editor and Reader Screens

The app consists of four main screens:

  • Home Page: Displays the list of all published stories inside the Slibro app.

  • My Stories Page: It has two sections, the first section displays your purchased stories (if any), and the next section displays the stories that you have written (if any).

  • Cart Page: Displays the list of stories that you have specifically added to the cart for purchasing. You can proceed with the checkout from this page.

  • Profile: Let's you view your profile information along with an options to edit your information. You will also find the log out button on this page.

Slibro Dashboard Screens

The following pages shows if the users tries to checkout the cart items. It used the Rapyd Checkout Toolkit to open the embedded web view inside the app - there's a 2-way communication set up between Dart and JS.

User's card information and billing information is taken as a part of this process. And, once the payment is successful an invoice is automatically sent to the user's email via SendGrid. There's also an option to download the invoice.

Slibro Dashboard Screens

Rapyd APIs

The following Rapyd APIs are used in this project:

  • Customer API: Used for creating and retrieving the customer information - mainly for storing the saved card information.

  • Checkout API: Used for generating and retrieving the checkout ID for the products that the user wants to purchase - it's also required while loading the embedded checkout toolkit inside the app.

Appwrite APIs

Three of the major Appwrite APIs are used:

  • Account API: Used for implementing user authentication and user data management.
  • Database API: Used for storing app data related to stories and chapters.
  • Storage API: Used for storing the Rich Text story file in JSON format.

Flutter packages

A lot of community members for searching for a Flutter SDK to access the Rapyd APIs, so I have started working on a Rapyd Flutter SDK. The package is in very early stage of development and has limited APIs to interact with, but has some of the major functionality like calculation of the salt and signature for the header that is required for performing a valid API call.

This SDK should make the Rapyd API calls really easy to perform. Here's a small example of how a new customer can be created using the SDK:

// Initializing
final rapydClient = RapydClient('', '');

try {
  // Creating a new customer
  final customer = await rapydClient.createNewCustomer(
    email: '[email protected]',
    name: 'User',
  );
  print('Created customer successfully, ID: ${customer.data.id}');
} catch (e) {
  print('ERROR: ${e.toString()}');
}

This project used the Rapyd Flutter SDK for perform the API Calls!

The following Flutter packages are used to build this app:

License

Copyright (c) 2022 Souvik Biswas

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.

You might also like...

Self Host Group Chat App (firebase + clean architecture) is full functional group chat where you can create new groups and update profile and communicate in different groups easily. there 2 auth firebase method [Google & Email Password]

Self Host Group Chat App (firebase + clean architecture) is full functional group chat where you can create new groups and update profile and communicate in different groups easily. there 2 auth firebase method [Google & Email Password]

Self Host Group Chat App (firebase + clean architecture) Show some and star the repo to support the project Screenshots Packages we are using: flutter

Jan 8, 2023

A full, sound, modern and documented JS interop for Dart.

This is (or should be) a full JavaScript interop package using package:js bindings. The bindings are generated by machine-reading WebIDL files for typ

Dec 15, 2022

🛍 A full E-commerce app with nice UI consists of on-boarding, login, sign-up, home, product details, cart and user profile.

🛍 A full E-commerce app with nice UI consists of on-boarding, login, sign-up, home, product details, cart and user profile.

About (Download) 🛍 A full E-commerce app with nice UI consists of on-boarding, login, sign-up, home, product details, cart and user profile. 📱 Scree

Nov 27, 2022

An expressive, functional, and full-featured server-side framework for Dart.

An expressive, functional, and full-featured server-side framework for Dart.

A framework and collection of packages for writing http servers, built on top of the shelf package. This framework is intended to reduce the technical

Jun 25, 2022

This is an interactive roadmaps/full stack curriculum app created for new programmers and enthusiasts.

This is an interactive roadmaps/full stack curriculum app created for new programmers and enthusiasts.

Eduance This is an educational app created by Gokul Eswaran and Kiran Vishwak for the national level Hackathon TekSpark'21 on 27/10/2021 hosted by Kar

Feb 4, 2022

🚀 Full-Stack Flutter application, encoded using Dart. Utilizes native device features 📷 and stores user data on a local SQFLite database. ✔

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

Jan 24, 2022

🌍 Full-stack travel app using Flutter, Dart and Geolocation service. Map updates 🗺 along with map markers based on location filters 📌

🌍 Full-stack travel app using Flutter, Dart and Geolocation service. Map updates 🗺 along with map markers based on location filters 📌

Tripscape 🌴 Built With Frontend Flutter Dart Backend & Libraries Geolocator Google Maps Flutter Provider API Places API Google Maps API Places Autoco

Nov 23, 2022

Full Stack Mobile Chat App - Built with django, flutter and mongodb

Full Stack Mobile Chat App - Built with django, flutter and mongodb

Applied design patterns. Built with django, flutter and mongodb. Mobile messaging application which uses a rest api and web sockets.

Nov 26, 2022

A Full Functional Application made bY Flutter Bloc Architcture.

Description Front End Flutter Bloc Architecture Back End Node Js An application designed for making home rentals easier. Lets landlords post their hom

Nov 18, 2021
Owner
Souvik Biswas
Flutter Developer | Technical Writer @FlutterFlow | Co-founder @SofiaYoga
Souvik Biswas
A full-fledged one-to-one chat app developed entirely in Flutter

Enigma Enigma - A minimalist, locked-down one-to-one chat app. Usage Flutter - Get Started Since this is a Firebase dependent project, create a Fireba

Amit Joki 389 Dec 23, 2022
This is a fully fledged Sudoku game written in Dart using Flutter.

This is a fully fledged Sudoku game written in Dart using Flutter.

Varun Shanbhag 56 Dec 29, 2022
USSD is similar to Short Message Service (SMS).

USSD is similar to Short Message Service (SMS). USSD uses codes made up of the characters that are available on a mobile phone. ... USSD can be used for Wireless Application Protocol (WAP) browsing, mobile money services, prepaid callback service, menu-based information services and location-based content services.

Behruz Hurramov 4 Nov 15, 2022
Flutter tiktok short video app.

flutter_tiktok 仿写抖音的flutter app。主要实现了看视频功能,可以非常流畅的刷视频,左右滑,点小爱心。 当前支持了flutter_web,但是在移动端浏览器的体验非常有限。 项目常见问题 和抖音不像:高手过招以点到为止,追求像素级一致没有意义,只要实现主要交互,可以随意根据自

null 1.2k Jan 7, 2023
😀 improve your productivity and long-term happiness in just 21 days.

Quick Links The Well app is available for download! ?? ?? iOS/macOS: Search for "well: reboot your mindset" on the iOS app store. Web: Visit https://w

Cole Gawin 42 Dec 28, 2022
An app that helps you gradually build long-lasting habits.

Githo Get Into The Habit Of… An app in which you level up towards your final habit. Acquiring habits that stick can be difficult. Githo helps you by l

null 53 Dec 9, 2022
🦋Beautiful flutter app for downloading Instagram stories 🚀

NOTE: No longer maintained Instory ?? ?? Beautiful flutter app for downloading Instagram stories ?? Demo video Dependencies used video_player http dio

Sarath 204 Dec 16, 2022
story_designer is created to help developers out there who are looking for implementing Instagram like stories editor.

story_designer A package for creating instagram like story, you can use this package to edit images and make it story ready by adding other contents o

Gulshan Yadav 19 Nov 2, 2022
The FlexGrid control provides a powerful and quickly way to display data in a tabular format. It is including that frozened column/row,loading more, high performance and better experience in TabBarView/PageView.

flex_grid Language: English| 中文简体 The FlexGrid control provides a powerful and quickly way to display data in a tabular format. It is including that f

FlutterCandies 39 Nov 8, 2022
A simple and customizable flutter package for inputting phone number in intl / international format

Intl Phone Number Input A simple and customizable flutter package for inputting

null 1 Jul 21, 2022