Skip to content

rootasjey/kwotes

Repository files navigation

Status

Website GitHub release (latest by date) GitHub Release Date GitHub commits since latest release (by date) GitHub last commit Codemagic build status

Download




Table of Contents



The Purpose

Text only version of the purpose image

kwotes is an app and service.
It's available on web, Android, iOS & more to come.

What you can do?

  • Read random quotes
  • Search for a specific quote
  • Look for paticular author or reference
  • Create themed quote lists
  • Propose your own quotes
  • Support multi-language (english, french for now)



The motive

Text only version of the motive image

I created this project because first of all I love quotes, then I didn't find an app or service having the same proposition value of kwotes, including:

  • A multiplatform app
    web & mobile at least
  • Modern & elegant interface
    simple and not bloated with ads
  • Source diversity
    quotes from films, tv series, books, musics , ...
  • Open to contribution
    users can propose new quotes and access application code bade.

Service

kwotes as a service will propose a public API to fetch quotes from the database. It's one of the goals of this project in a long-term scenario. The API will probably have a free & paid tier.

My sources

I take most of my quotes in movies, tv series, books & music. Those sources are very different from each other and it's something I really appreciate. I wouldn't like to limit the fun to only books.

Don't limit yourself neither in the form of sources. Culture is very vast and rich. We don't have to stay in one medium.

Contribute

This project welcomes contributions whatever its size. You can participate in different ways:

  • Give your general feedback & suggestions
  • Submit new quotes in the app
  • Report a bug/Open a GitHub issue

You cannot run this app on you local environment yet. I'll have to clone the firebase backend into a test project for security reasons.

Credits

These projects and libraries considerably helped the development.

General Purpose

Name Description
Flutter Frontend UI library.
Dart Programming language.
GitHub Source code repository.
VSCode Code editor.
Firebase Cloud database & backend services.
Codium AI code assistant.

Libraries

Name Description
adaptive_theme Theme manager.
algolia Search service.
animated_text_kit Text animation.
beamer A litte less complex router (than the native one).
bottom_sheet Custom bottom sheet widget that can be resized in response to drag gestures and then scrolled.
boxy Additional & flexible layout widgets.
cupertino_icons Icons from Apple.
cloud_firestore Firestore database to access & store quote data.
cloud_functions Cloud functions for server-side code.
dismissble_page Widget page implementing swipe-to-dismiss gesture.
easy_localization Internationalization for Flutter applications.
file_picker File picker for selecting folder to save quote images.
firebase_auth Authentication to signing in users.
firebase_analytics Analytics for tracking app usage.
firebase_core Necessary to initialize Firebase services.
firebase_storage Storage for accessing static images.
flex_list Puts as many provided elements as possible in one row (like Wrap), but also extends the width of the elements by the remaining space per row.
flutter_animate A performant library that makes it simple to add almost any kind of animated effect in Flutter. It becomes easy to animated items & lists.
flutter_dotenv Load configuration at runtime from a .env file which can be used throughout the application. Makes it possible to store private API keys like Algolia.
flutter_improved_scrolling An attempt to implement better scrolling for Flutter Web and Desktop. Includes keyboard, MButton and custom mouse wheel scrolling.
flutter_langdetect A Flutter package for language detection, ported from the Python langdetect library. Used to automatically detect a quote's language while writing it.
flutter_launcher_icons A command-line tool which simplifies the task of updating your Flutter app's launcher icon.
flutter_loggy Loggy extention for Flutter. Loggy is an highly customizable logger for dart that uses mixins to show all the needed info.
flutter_solidart A simple state-management library inspired by SolidJS.
flutter_tabler_icons Tabler icons for Flutter.
glutton Simple multiplatform local data storage.
google_fonts Google fonts for Flutter.
image_downloader_web Simply download quote's images on web.
infinite_carousel Infinite Carousel is a flutter carousel widget that supports infinite looping and gives precise control over selected item anchor and carousel scroll velocity.
jiffy Display relative date & time. Date parser & formatter.
just_the_tooltip Customizable tooltip.
liquid_pull_to_refresh A beautiful and custom refresh indicator for flutter.
loggy Highly customizable logger for dart that uses mixins to show all the needed info.
lottie Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile! This repository is an unofficial conversion of the Lottie-android library in pure Dart.
photo_view A simple zoomable image/content widget for Flutter.
rive Real-time interactive design and animation tool.
salomon_bottom_bar A beautiful bottom navigation bar.
screenshot Capture widgets as images. Even if there're not rendered on screen.
share_plus A Flutter plugin to share content from your Flutter app via the platform's share dialog.
smooth_page_indicator Customzable animated page indicator with a set of built-in effects.
super_context_menu Single context menu widget that works accross all desktop platforms, mobile platforms and web.
text_wrap_auto_size Wraps text and auto sizes it with respect to the given dimensions, including style, text properties and correct hyphenation. Result can be accessed programmatically.
url_launcher Open URLs in browser.
verbal_expression Regular expressions made easy.
window_manager Customize, resize & reposition desktop app window.

Add a quote

You can freely add a quote to the app after creating an account.

Basic rules

The service is manually handled and is not an automated process, so a human will read and validate your quote if it respect some basic rules:

  • Your quote should be short (1 sentence or 2); it's not a poem.
  • It must be easily understandable
  • It should sparkle an emotion or welcome a reflexion
  • Avoid offensive words of ideas (e.g. racism, sexism)

These validation criterias are completely subjective.

Tips

We can't assure you than every submission will be accepted but you can improve your chances with these tips:

  • Check the grammar, sentences' structure and ponctuation
    A quote with a lot of mistakes is more likely to be rejected
  • Provide a valid author
    And if this author doesn't already exist in the database, give a good amount of information
  • Give a valid reference
    And if this reference doesn't already exist in the database, give a good amount of information
  • Correctly categorize the quote with available topics (necessary)

Avoid

On the contrary, a short list of usual rejections:

  • Hard to understand due to missing or partial information
  • Strong language, offensive words or ideas
  • Too ordinary (the sentence doesn't have any particularity - e.g.: The sun is red.)

If you still have doubts, you can always open an issue here.

Whenever you're down, look up. It'll make your realize just how big and beautiful the world is.
Emma Green — Away

Contribute

PLEASE READ

⚠️ This project is in early development stage so the developer part hasn't been built yet. You won't be able to contribute at the moment without explicit authorization.

Code styles

Repository code styles for better structure and reading.

Dart class

Rules for dart classes.

  • All imports at the top, ascending ordered alphabeticaly
  • Variables declared at the top of the state
class _DashboardState extends State<Dashboard> {
  User userAuth;
  bool canManage = false;
  // ...
}

Class methods in priority order:

  • Overrides (e.g. initState)
  • build method
  • Custom methods which return a widget
  • Other functions (e.g. auth functions, fetch data, ...)

License

Mozilla Public License 2.0.

Please read the LICENSE for more information.

Please open a pull request if you have any doubt.

Privacy Policy

You can find the platform's privacy policy in this repo: TOS.md