Giter Site home page Giter Site logo

preetjdp / youoweme Goto Github PK

View Code? Open in Web Editor NEW
9.0 2.0 6.0 2.4 MB

Making it simpler to track those chillars

Kotlin 0.06% Swift 0.19% Objective-C 0.02% Dart 64.19% HTML 2.20% TypeScript 18.46% Dockerfile 0.85% C++ 8.04% C 0.70% Batchfile 0.67% Ruby 1.55% Shell 3.08%

youoweme's Introduction

You Owe Me

An Application that keeps tracks of your chillars, shows off the best ways 1 to build a set of services that come together in a beautiful structure.

Status

Currenly in Active Prototypical Development.

Mobile App Build

Server Build

Design

The Figma for the project can be found through the link below.

Figma Design

Contact the Admin for editor access.

Contribution Guide

This mono repo is open source, so feel free to take it apart, and go bonkers with it ๐Ÿฑโ€๐Ÿ.

Each service of the product is nicely seperated into its own folders as a effect of the mono-repo paradigm.

But if you wish for your idea to land on the app, submit a proposal in the form of an Issue and lets percolate on it.

Tech Stack

These are the set of services currently being used for the product.

Navigating the Codebase

The Codebase is a single monorepo consisting of all the infrastructure required to run the services, nicely organised and placed in its own folders with kick ass documentaion 2 .

Code Of Conduct

This project is very much established on the foundation of No Bureaucracy, No Bullshit, If you have a idea don't supress it down (Let's the ideas flow, like a river).

If you're pumped to work with people and have a profound belief in building amazing products for consumers with empathy, You're Most Sincerely Welcome ๐Ÿ™ (เคจเคฎเคธเฅเคคเฅ‡).

Citations

  1. The best is extremly subjective ๐Ÿ˜ƒ.
  2. Well Not yet.

youoweme's People

Contributors

dependabot[bot] avatar palcodes avatar preetjdp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

youoweme's Issues

[BUG] UI overflow

Describe the bug
UI bugs

To Reproduce
Tap on any Text field

Screenshots
name page
otp page

Smartphone (please complete the following information):

  • Device: Asus Zenfone max pro m2
  • OS: Android 9

[BUG] Timestamp not working with Flutter

Describe the bug
The Timestamp scalar used in Graphql does not Transpile to dart DateTime.

dateScalarMode: "timestamp",

To Reproduce
Steps to reproduce the behavior:
Just use any query with the Artemis Generator to look at find build_runner errors.

query {
  getUsers {
    id
    name
    created
  }
}

Expected behavior
The Timestamp should be converted to DateTime

Describe the idea / solution you'd like
Implement / or find a custom scalar map as mentioned here on pub.

[NEW IDEA] Login Flow

Is your feature request related to a problem? Please describe.
To create a super amazing login flow experience.

Describe the idea / solution you'd like
The idea in my mind is to have a two staged login flow, the first stage a story laying out the premise of the application.
Stage Two the minimal login / sign up flow.

[BUG] Prevent NewOwe On Myself

Describe the bug
Currently it is possible to make a NewOwe Mutation on yourself, this needs to be solved.

To Reproduce
Steps to reproduce the behavior:
This sort of a mutation is allowed and that is a problem.

mutation {
  newOwe(data: {
    title: "Taxi Bill",
    amount: 100,
    issuedToID: "Ei66LhElIZ3eEQeqGBIp"
  }) {
    id
    issuedBy {
      id
      name
    }
  }
}

Expected behavior
To return an Error with state's something like 'You cannot make an Owe to yourSelf'

Screenshots
image

Additional context
Code Snippet in question:

async newOwe(
@Arg("data")
{
title,
amount,
issuedToID
}: NewOweInputType,
@Ctx() context: ApplicationContext) {
const userId = context.req.headers.authorization!
const userRef = firestore.collection('users').doc(userId)
const userSnapshot = await userRef.get()
if (!userSnapshot.exists) {
throw Error("User Not Present")
}
const issuedToRef = firestore.collection('users').doc(issuedToID)
const owe = {
title: title,
amount: amount,
issuedToRef: issuedToRef,
created: Timestamp.fromMillis(Date.now())
}
const oweRef = await userRef.collection('owes').add(owe)
const oweResponse = await new OweResolver().getOweFromRef(oweRef)
return oweResponse
}

[NEW IDEA] GraphQL Type Generation

Is your feature request related to a problem? Please describe.
The current way getting things from the GraphQL api is pretty a

  • Not Scalable
  • Not Typesafe
  • Error Prone

Describe the idea / solution you'd like
The solution is to explore ways to generate (/ or manually write) Classes with proper types.

The current idea is to try out Artemis and come up with a robust solution.

[NEW IDEA] "Owe" Schema Design

Is your feature request related to a problem? Please describe.
This is an issue created to keep track of the Owe Schema Design, and how to move forward with the general design of this API for it to be saleable.

Describe the idea / solution you'd like
The current ideas with 84dd286 is to start by testing with experimenting the schema with Hive.

Additional context
Multiple Ideas on how to go forward with this will be discussed here.

[BUG] Get Google Services working with CI

Describe the bug
Builds are failing because Google Services.json is not present in its location.

To Reproduce

  1. git clone ...
  2. flutter build
  3. Failure ๐Ÿ˜จ
    Expected behavior
    Work

Describe the idea / solution you'd like
Solutions in my mind:

  1. Either Implement a environment variables based solution.
  2. Store google_services.json in Github Secret create the file on CI runtime.

[NEW IDEA] A more longer lived Cache

Is your feature request related to a problem? Please describe.
The current implantation of Dataloader only caches and batches per request.

Describe the idea / solution you'd like
Given my server is in cloud run, a cache that lives for 5 minutes. Would give super performance for recurring users and the cache and usage would also be less.

Additional context
Brainstorm on how to do this.

[NEW IDEA] Send a notification when a new owe is created.

Is your feature request related to a problem? Please describe.
This a very crucial feature for the entire product.
When a new owe is created many side-effects should take place.

Describe the idea / solution you'd like
They being as follows:

  • If the user to whom the Owe is IssuedTo is present in the system and and has notifications enabled, send a notification to him.
  • If the user has the app but does not have notifications enabled, send him an SMS with a deep/dynamic-link url courtesy of Firebase Dynamic Links with a relevant message.
  • If the user is a first time user (not much details in the sys), then send him a introductory SMS
    with the ability to use the app directly from the web as a webApp.
  • Add more WIP.
  • Send Actions with Notifications.

Additional context
For all of this have to find something that is super cheap, like super cheap.
Hey might might even consider using the whatsApp api ๐Ÿ‘€๐Ÿ‘€

[BUG] Better way to check if Local Server is Live.

Describe the bug
The bug is on mobile where I use a Http.get query to check weather the server is alive.
The problem is that because Seva only accepts Gql requests, it sends a 400 response which is a error.

On Seva Level it just pings the local Firebase Server with returns a 200, so there is no problem there.

Expected behavior
Just to check if the server is alive

Additional context

Response response = await get(localSevaUrl).timeout(Duration(seconds: 2));
if (response.statusCode == 200 || response.statusCode == 400) {
print("Using Local Seva");
return localSevaUrl;
} else {
throw "Could Not Connect to Local Seva";
}
} catch (e) {
print("Using Production Seva");
return productionSevaUrl;
}

[NEW IDEA] Automatically Release App to Releases Page

Is your feature request related to a problem? Please describe.
Currently there is no way to test the app, other than to build locally.

Describe the idea / solution you'd like
The idea is to integrate the existing CI/CD system to also release to the releases page, when a commit is pushed with the a tag maybe.

Possible Actions that could be used.
https://github.com/actions/create-release
https://github.com/technote-space/release-github-actions

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

[NEW IDEA] States of an Owe

Is your feature request related to a problem? Please describe.
The idea to define a clear set of state a Owe can be in, to better handle its existence and show it in the UI.

Describe the idea / solution you'd like
In terms of graphql the solution should be in the lines of this https://typegraphql.com/docs/enums.html

The current enums in my mind are:

enum OweState {
    Opened,
    Declined,
    Delayed,
    Acknowledged,
    Paid
}

Additional context
This will be to track the state of a owe (is it paid, has the person acknowledged is, is it delayed, etc).
Another very important thing is it should be very flexible, easy to add new enums.

[NEW IDEA] Abstracted Arrow Text

Is your feature request related to a problem? Please describe.
The problem is to achieve a Text with an arrow in it it has to be wrapped in an Row every time.
As follows

child: Row(
children: <Widget>[
Text(
"Owe Me",
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: Color.fromRGBO(78, 80, 88, 1)),
),
Icon(Icons.keyboard_arrow_right,
color: Color.fromRGBO(78, 80, 88, 1),
)
],
)),

Describe the idea / solution you'd like
The solution in my mind is to create an Abstracted Widget As follows.

class ArrowText extends StatelessWidget {
  final String text;
  //Callback Func
  //Style
  //Brightness
  //etc
  ArrowText({@required this.text});
  @override
  Widget build(BuildContext context) {
    return Row(
      children: <Widget>[
        Text(
          text,
          style: TextStyle(
              fontSize: 18,
              fontWeight: FontWeight.bold,
              color: Color.fromRGBO(78, 80, 88, 1)),
        ),
        Icon(
          Icons.keyboard_arrow_right,
          color: Color.fromRGBO(78, 80, 88, 1),
        )
      ],
    );
  }
}

Additional context
This is just to build upon the idea of better Abstractions and smaller Code

[NEW IDEA] Android Instant App

Is your feature request related to a problem? Please describe.
All users would not want to install the App which is fair.
For thy.
Explore the possibility of turning YouOweMe to a Instant App well maybe parts of it.

Describe the idea / solution you'd like
Shrink resources of the app to be under 5 MB ( Well Maybe 10), to fit the Instant App Spec.

Describe alternatives you've considered
The other alternative is to make a webApp as a PWA.

Additional context

[NEW IDEA] Permalink For a Owe

Is your feature request related to a problem? Please describe.
A Permalink generated for a Owe which can be used as the share url when one shares a Owe or when Owe Notification is sent as a sms.

Describe the idea / solution you'd like

The problem with this is it looks too complicated.

Additional context
The link will open the app with the owe if the app is installed and should open on the web if not installed.

[BUG] Figure out a way to get IP of the hostmachine.

Describe the bug
The problem here is on mobile uses a predefined IP address. And this might not work all the time.

Future<String> getSevaUrl() async {
String localSevaUrl = "http://192.168.31.76:4000";
String productionSevaUrl = "https://api.youoweme.preetjdp.dev";
if (kReleaseMode) {
print("Using Production Seva In Release");
return productionSevaUrl;
}
try {
Response response = await get(localSevaUrl).timeout(Duration(seconds: 2));
if (response.statusCode == 200 || response.statusCode == 400) {
print("Using Local Seva");
return localSevaUrl;
} else {
throw "Could Not Connect to Local Seva";
}
} catch (e) {
print("Using Production Seva");
return productionSevaUrl;
}
}

Expected behavior
In Debug mode automatically find the IP address of the host machine and use that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.