![Ppp Store](https://raw.githubusercontent.com/rootasjey/kwotes/master/./screenshots/app_store_badge.png)
- Status
- Download
- Table of Contents
- The Purpose
- The motive
- My sources
- Contribute
- Credits
- Add a quote
- Contribute
- License
- Privacy Policy
Text only version of the purpose image
kwotes is an app and service.
It's available on web, Android, iOS & more to come.
- 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)
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.
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.
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.
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.
These projects and libraries considerably helped the development.
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. |
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. |
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. |
sliver_tools | 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. |
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. |
You can freely add a quote to the app after creating an account.
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.
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)
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
⚠️ 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.
Repository code styles for better structure and reading.
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, ...)
Mozilla Public License 2.0.
Please read the LICENSE for more information.
Please open a pull request if you have any doubt.
You can find the platform's privacy policy in this repo: TOS.md