/Junior

A bookmarking app specialised towards online webnovels. Built in Flutter and Dart.

Primary LanguageDartGNU General Public License v3.0GPL-3.0

banner

Dart Flutter Android PR License OpenSource


Junior demo

Junior dares! to make a novel bookmarking app specialised for online webnovels. Initially inspired by this thread on r/noveltranslations, I wanted to create a novel managing app that can handle more data than any notes taker, while also looking way better and still being as easy to use.

Junior is an open-source Android app that helps you catalogue the novel you're reading and your progress on it. Apart from these details, you can also log your personal rating and any chapter notes for the current novel. There's a demonstration of the working to the right ⟶


Table of Contents


Installation

To install Junior you can find the current release on the Play Store. If you want to make it harder for yourself, you can also download the apk from this drive folder and install it on your phone.

The app as it is right now is only available on Android and in dark mode. To request additional features or report a bug in the app, just create an issue on the repository.


Usage

As it is right now the app lets you View your reading list in a far better way than any notepad would. The initial homescreen shows your novel list and sort order (Alphabetical, Most Recent or Rating). You can also search for a particular entry with the search bar.

The Details you can log for any novel are:

  • Title
  • Current and Total Chapters
  • Personal Rating
  • Link to the Current Chapter
  • Chapter Notes or Novel Review

Development

I intend to make this a proper open-source project so the following sections are about developing and modifying the existing app. There's stuff from Navigation to Contribution Guidelines so do check it out if you're helping out!

Navigation

Junior/
├── assets/
│   └── banner.png
├── README.md
└── src/
    ├── android/..
    ├── build/..
    ├── assets/..
    ├── test/..
    ├── lib/
    │   ├── details_page/
    │   │   ├── body.dart
    │   │   └── components/..
    │   ├── homepage/
    │   │   ├── body.dart
    │   │   └── components/..
    │   ├── model
    │   │   └── novel.dart
    │   ├── main.dart
    │   └── theme.dart
    ├── pubspec.lock
    ├── pubspec.yaml
    └── src.iml

In case it's not obvious, src/ contains all source files for the application, top level assets/ contains assets for the repo and README, assets/ in src/ contains application data like the icon and all.

I've divided the application into subdirectories the way it makes sense to me. main.dart runs the entire thing, theme.dart contains constants for commonly used colors and more. The only model is novel.dart, which contains code for the Novel class, its attributes and all methods involving reading and writing to memory.


flutter_screen
├── body.dart/
└── components/
    ├── button.dart
    ├── list_tile.dart
    ├── searchbar.dart
    └── title.dart

A page looks something like above, with a body and a subdirectory of widget components. body.dart contains only top level information on how to place the widgets while the actual widgets will be in components/. Even if it's something as simple as a Text(), please make a separate class for it, it makes it super easy to re-arrange stuff later on.

And that's about it for navigation! This is the layout that I feel is most intuitive and easy to work with tbh.


Getting Started

TODO


Contributing

Any and all contributions are welcome! As Junior is a project in release, changes to the source code won't be immediately accepted (they will be marked complete for HacktoberFest, don't worry). In case it's a new feature or something not mentioned below, just create an issue beforehand please. Also do add your name and account to the Maintainer's Section of CONTRIBUTING.md with your Pull Request!

Contributions regarding the below are especially appreciated!

  • Contributing to the README (The TODO parts, mainly 😅)
  • Adding Pages to the Wiki
  • Minor changes/refactors to the Flutter Code
  • Adding features to the Application requested by users
  • Adding tests for the app

One thing I ask of you guys is to follow the directory structure as shown in this section. Also run the following commands before any pull request so that it doesn't cause issues with the linter. And fix any minor issues it brings up!

flutter format --set-exit-if-changed .
flutter analyze .

Other Stuff

Stuff I need to add or attribute but didn't get a place in the section before