All Projects → rm3l → dev-feed

rm3l / dev-feed

Licence: MIT license
Flutter-based mobile app displaying a list of daily curated content from top engineering blogs and articles. Backed by a GraphQL-based API written in Kotlin..

Programming Languages

kotlin
9241 projects
dart
5743 projects
objective c
16641 projects - #2 most used programming language

Projects that are alternatives of or similar to dev-feed

justBreathe
A minimal meditation app made with Flutter
Stars: ✭ 47 (+135%)
Mutual labels:  ios-app, android-app, flutter-app
flutter-Anniversary
一款界面优美,功能简洁的纪念日APP
Stars: ✭ 57 (+185%)
Mutual labels:  ios-app, android-app, flutter-app
flutter todos
A cross platform todo list app using flutter, sqlite etc. If you read the code, you will understand how to create simple elegant mobile app using Flutter and Dart language.
Stars: ✭ 60 (+200%)
Mutual labels:  ios-app, android-app, flutter-app
rust android ios
Android / iOS app with shared Rust logic
Stars: ✭ 182 (+810%)
Mutual labels:  ios-app, android-app
One Vue
仿韩寒「ONE · 一个」,基于vue2.0+混合式开发的一款跨终端、高性能、用户体验高的移动端App! 学习Vue的同学可以看下,感谢 Star 和 Fork!!
Stars: ✭ 93 (+365%)
Mutual labels:  ios-app, android-app
Matchimals.fun
🦁 🃏 📱 An animal matching puzzle card game– built with turn-based game engine boardgame.io and React-Native + React-Native-Web
Stars: ✭ 101 (+405%)
Mutual labels:  ios-app, android-app
Chatter App
This is a flutter based modern messaging app where users can sign up and log in to chat with their friends, family, colleagues among groups with enriched User-Experience.
Stars: ✭ 80 (+300%)
Mutual labels:  ios-app, android-app
Todayx
🌈Flutter App:🎊「今日份的X」(每天推荐一个:图片、诗歌、名言、音乐、乐评、高等数学、两种配色、化学方程式、Github Repo、知乎问题、文章)
Stars: ✭ 128 (+540%)
Mutual labels:  ios-app, android-app
Anypicker
jQuery Picker Library for Android, iOS & Windows Phone. eg Date Picker, Time Picker, DateTime Picker, Custom Select etc
Stars: ✭ 114 (+470%)
Mutual labels:  ios-app, android-app
App Privacy Policy Generator
A simple web app to generate a generic privacy policy for your Android/iOS apps
Stars: ✭ 2,278 (+11290%)
Mutual labels:  ios-app, android-app
Uniapp Admin
Muti-platform management system for uniapp, H5, Android, IOS, Min Program
Stars: ✭ 226 (+1030%)
Mutual labels:  ios-app, android-app
Kotlin Mpp Standard
A standard setup for Kotlin multiplatform projects.
Stars: ✭ 92 (+360%)
Mutual labels:  ios-app, android-app
Lbrnmeituan
ReactNative 仿美团项目
Stars: ✭ 84 (+320%)
Mutual labels:  ios-app, android-app
Wordpress App With Flutter
Fully Functional IOS/Android App for WordPress Website with Flutter
Stars: ✭ 109 (+445%)
Mutual labels:  ios-app, android-app
Calenstyle
Responsive Drag-&-Drop Event Calendar Library for Web, Mobile Sites, Android, iOS & Windows Phone
Stars: ✭ 83 (+315%)
Mutual labels:  ios-app, android-app
E Commerce Complete Flutter Ui
youtu.be/0z-igs267xw
Stars: ✭ 2,380 (+11800%)
Mutual labels:  ios-app, android-app
Ionic Starter Template
Reinventing the wheel, again! Sorry Ionic Team... but there are many newbies learning on Youtube!
Stars: ✭ 208 (+940%)
Mutual labels:  ios-app, android-app
linux-android-backup
Back up your device without vendor lock-ins, using insecure software or root. Supports encryption and compression out of the box. Works cross-platform.
Stars: ✭ 119 (+495%)
Mutual labels:  android-app, flutter-app
Flutter Tetris
a tetris game powered by flutter. 使用flutter开发俄罗斯方块。
Stars: ✭ 1,109 (+5445%)
Mutual labels:  ios-app, android-app
Rust android ios
Android / iOS app with shared Rust logic
Stars: ✭ 69 (+245%)
Mutual labels:  ios-app, android-app

Dev Feed

Backend Build Workflow Mobile Build Workflow

Heroku

Docker Stars Docker Pulls

License

Dev Feed is a Flutter-based mobile application allowing to keep up with top engineering content from companies all over the world. It stemmed 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 scheduled crawlers in charge of analyzing certain remote websites for articles and feeding a local database. It then aggregates and exposes such data over a GraphQL API, with the ability to search for articles, or by tags, or to read past articles. This Backend application is published to the Docker Hub, and continuously deployed to Heroku as well. At the moment, articles are fetched from the list below, but additional sources may be added later on:
  • Mobile
    • A cross-platform 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 an enhancement that might be implemented later on.

Building and running

Using the Backend GraphQL API

Docker

A Docker repository with the GraphQL API Server can be found here: https://hub.docker.com/r/rm3l/dev-feed-api

To fetch the docker image, run:

docker image pull rm3l/dev-feed-api

To run the server with the default options and expose it on port 8080:

docker container run --rm -p 8080:8080 rm3l/dev-feed-api

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

Kubernetes

The Backend API is also published to my Helm Charts repository, so as to be deployable to a Kubernetes Cluster using Helm.

It is listed on Artifact Hub : https://artifacthub.io/packages/helm/rm3l/dev-feed

$ helm repo add rm3l https://helm-charts.rm3l.org
$ helm install my-dev-feed rm3l/dev-feed

See https://artifacthub.io/packages/helm/rm3l/dev-feed or https://github.com/rm3l/helm-charts/blob/main/charts/dev-feed/README.md for all customizable values.

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

Manual mode
  1. Build the Backend
./backend/gradlew -p ./backend build --stacktrace
  1. Run the Backend GraphQL API
java -jar backend/api/build/libs/dev-feed-api-1.12.1.jar

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

Using the Mobile application

  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 --debug

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 --debug -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/debug/.

  1. Install and run the APK either in an emulator or in a real device
flutter install

Or:

adb install -r build/app/outputs/apk/debug/app-debug.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-2022 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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].