Sign inSign up

rm3l/dev-feed

By rm3l

•Updated about 10 hours ago

Image
0

9.7K

rm3l/dev-feed repository overview

⁠Dev Feed

Download app

License

CircleCI

Heroku

Docker Automated build Docker Build Status Docker Stars Docker Pulls

Dev Feed is a Flutter-based mobile application allowing to keep up with top engineering content from companies all over the world. It initiated from my own needs to not only follow a curated list of tech-related blogs, but also play a little bit with the excellent Flutter⁠ SDK.

demo

⁠Tech Stack

The tech stack is rather simple:

  • Backend
    • A Spring Boot⁠ application written in Kotlin⁠, which contains crawlers, in charge of crawling certain websites for articles and feeding a local database. It then exposes such articles over a GraphQL⁠ API, with the ability to search for articles, or by tags, or to read past articles. At the moment, the single crawler plugin available reads the article list from DiscoverDev.io⁠, but additional crawlers may be added later on. The Backend application is published to the Docker Hub⁠, and continuously deployed to Heroku⁠ as well.
  • Mobile
    • A mobile UI application written in Dart⁠, using the Flutter⁠ SDK. Please note that there is no sync'ing mechanism, and all search/favorite articles are stored on the local device. This is something that might be added later on.
⁠Building and running
  1. Clone the repo
git clone https://github.com/rm3l/dev-feed && cd dev-feed
  1. Build the Backend
./backend/gradlew -p ./backend build --stacktrace
  1. Run the Backend
java -jar backend/build/libs/dev-feed-backend-0.2.0-SNAPSHOT.jar

You can then access the GraphiQL browser by heading to http://localhost:8080/graphiql⁠

  1. Install Flutter by following the instructions on the official website⁠

  2. Prepare the configuration environment

Skip this to use the default Heroku Backend. Otherwise, if you have a custom Backend (either local or remote), you need to create a specific environment file (say my_personal_backend.dart) in the mobile/lib/environments folder, e.g.:

import 'package:dev_feed/env.dart';

void main() => MyPersonalBackend();

class MyPersonalBackend extends Env {
  final String baseUrl = 'https://my-dev-feed-backend-api.example.org';
}
  1. Build the mobile apps

First cd to the mobile directory:

cd mobile

If you simply want to target the default Heroku backend, just run:

flutter build apk

Otherwise, if you have a custom Backend (and its related Dart environment file) declared under mobile/lib/environments/my_personal_backend.dart, then run:

flutter build apk -t lib/environments/my_personal_backend.dart

You will then find the mobile applications built under the respective platform folders. For example, the APK for Android can be found under build/app/outputs/apk/.

  1. Install and run the APK either in an emulator or in a real device
adb install -r build/app/outputs/apk/app.apk

⁠Contribution Guidelines

Contributions and issue reporting are more than welcome. So to help out (e.g., with a new Article crawler plugin in the Backend), do feel free to fork this repo and open up a pull request. I'll review and merge your changes as quickly as possible.

You can use GitHub issues⁠ to report bugs. However, please make sure your description is clear enough and has sufficient instructions to be able to reproduce the issue.

⁠Credits / Inspiration

⁠Developed by

⁠License

The MIT License (MIT)

Copyright (c) 2019 Armel Soro

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.

Tag summary

Content type

Image

Digest

sha256:a2bd4d17e…

Size

201.7 MB

Last updated

about 10 hours ago

docker pull rm3l/dev-feed