Dalal Street Client 2022

Overview

Flutter Client for Dalal Street

Prerequisites

Check Prerequisites

  • Run if you have installed all the required flutter dependencies with

    flutter doctor -v
  • Ensure protoc compiler version is 3+

    protoc --version
  • Dart plugin for the protocol compiler

    • Install the protocol compiler plugin for Dart (protoc-gen-dart)
    flutter pub global activate protoc_plugin
    • Update PATH so that the protoc compiler can find the plugin

Setup

  • Clone the repository

    git clone https://github.com/delta/dalal-street-client.git
  • Install dependencies

    flutter pub get
  • Setup submodules

    git submodule init
    git submodule update
  • Generate proto files

    ./build_proto.sh
  • Running the server

    • Run cp config.example.json config.json

    • Fill in the server configuration(host, port etc) in config.json.

    • Connect your device and run

    flutter run

Dev Guidelines

  • For each feature proper Tests should be written before creating pull requests
  • Comment as much as possible
  • Please follow this format [type]:commit message for committing your code.
  • Example [feat]: Initial Commit
Comments
  • [Add] charts

    [Add] charts

    • add candle stick and line graph in company page
    • all the price recorded in stockhistory is same so while in development it'll be straight line (need trail testing)
    • bar chart is easy to added (can be done later

    have to check with custom stock history data and in trail test as well

    • x-axis shows up weird numbers for now due to time format (can we remove x-axis ?)
    • the complete output of charts is not up to the level as of now (can redo everything in vanilla canvas in flutter if we have time)

    screenshots

    Screenshot from 2022-02-03 15-55-02

    Screenshot from 2022-02-02 17-06-25

    enhancement 
    opened by siva2204 4
  • Add proper logging

    Add proper logging

    Right now we are only printing errors with print statements. It will become hard to debug as the project grows in size. Everything in console looks blue 😢. It's hard to see where errors are printed

    opened by Sudhindra3000 3
  • [feat] [routing]: add support for proper web routing

    [feat] [routing]: add support for proper web routing

    Features:

    • Use go_router for navigation
      • Has easy api for navigating between pages
      • Has features for stuff like Redirection, Nested Navigation etc
      • Checkout the docs to get started
    • Remove # from web urls. Docs link
    • Switch between bottom bar and side drawer for app and web.
    • Change url when switching between screens in DalalHome. Docs link
    • Handle manual url input in browser and tab refresh using Navigator Builder

    Changes:

    • Used Navigator Builder instead of builder field in MaterialApp widget for executing common app logic
    • Refactored code for showing menu items in bottom bar and home bottom sheet
    • Changed fromSplash to manualLogout in DalalLoggedOut state for easier understanding
    • Removed SplashPage as its not needed anymore. Navigator Builder achieves the required functionality well

    Fixes:

    • on DalalLogOut event: call unsubscribeFromGlobalStreams() only if GlobalStreams was registered

    Todos:

    • In some places Navigator.push() is still used. I changed for the ones needed during testing. Other can change for the pages they are working on
    • Redirection: go router has a pretty decent api for redirection. Can be done easily. See docs
    • Used basic Material Drawer for side drawer. Need to implement ui in figma

    Further comments are given in parts of the code to better understand specific functionalities.

    Do tell if i should add more comments or better explain the logic in any place.

    refactor web routing 
    opened by Sudhindra3000 2
  • [feat]: Added Custom Dalal Loading Bar

    [feat]: Added Custom Dalal Loading Bar

    In this PR :

    • Added custom component called DalalLoadingBar
    • used package called lottie to show loading animation using json file
    • Screen Recording of implementation : https://photos.app.goo.gl/7NEehAKVKuukpnNK6
    enhancement ui 
    opened by satyamurti 2
  • Add Subscription BloC and HomePage

    Add Subscription BloC and HomePage

    • Created Companies Bloc for Streaming of Stock Prices
    • Added Responsiveness using LayoutBuilder
    • Added Subscribe and Unsubscribe Cubit for handling subscription of rpc streams
    • Added GetStockList Bloc to get initial List of Stocks
    • Created basic UI for Home Page accordingly
    • Commented out Dalal App Icon Image from landing page because auth and landing pages are not responsive , they are overflown in many screens.
    new page streams 
    opened by satyamurti 2
  • Mortgage Page

    Mortgage Page

    • Users can Mortgage the stocks they own for some quick cash
    • Contains a list of all the game stocks with the mortgage value per stock
    • Refer to relevant components in dalal-street-web
    opened by kelpikz 2
  • Create Grpc client for web and non-web platforms

    Create Grpc client for web and non-web platforms

    Example usages of grpc clients

    Action Client

    Future<void> usingActionClient() async {
      final LoginResponse resp = await actionClient.login(LoginRequest(email: '[email protected]', password: 'sfmdsfd'));
      if (resp.statusCode == LoginResponse_StatusCode.OK) {
        print('User logged in');
      } else {
        print('Error');
      }
    }
    

    Stream Client

    // Subscribe to the stream using helper functions like listen
    void usingStreamClient1() {
      final stream = streamClient.getNotificationUpdates(SubscriptionId(id: 'xyz'));
      stream.listen((value) => print('New notification value: $value'));
    }
    
    // Iterate over the values of stream using await for loop
    Future<void> usingStreamClient2() async {
      final stream = streamClient.getNotificationUpdates(SubscriptionId(id: 'xyz'));
      // When the loop body ends, the function is paused until the next value arrives or the stream is done
      await for (final value in stream) {
        print('New notification value: $value');
      }
    }
    
    setup 
    opened by Sudhindra3000 2
  • Feat(shimmer): create util shimmer widgets for different layouts

    Feat(shimmer): create util shimmer widgets for different layouts

    created a bunch of re-useable shimmer widgets which can be used as visual indicators that data is being loaded for different layouts.

    list_image_view image

    expanded_image_view image

    text_view image

    enhancement ui 
    opened by kelpikz 1
  • [Add] crt-file to config

    [Add] crt-file to config

    • add crt file to config.json

    this is how config should be in prod stage

    { 
        "mobile": {
            "host":"dalal.pragyan.org/server",
            "port": 443
        },
        "web": {
            "host":"dalal.pragyan.org/envoy",
            "port": 443
        },
        "TLScert": "assets/tls_keys/docker/server.crt"
    }
    
    config 
    opened by siva2204 1
  • Trading dashboard

    Trading dashboard

    • typically users spend most of their time in this page
    • player can place limit, market, stoploss buy and sell orders for each companies here
    • order book will be shown in the form of market depth (shows the open ask and bid orders in order book)
    • this page includes the last 10 transaction for each company in transaction history tab
    • all the orders placed by the user will be shown in this page and user's can cancel them(before matching)
    • stock history and trends will be shown in this page for all the companies seperately
    • check out /trade page for demo
    opened by siva2204 1
Owner
Delta Force
The Official Programming Club of NIT Trichy
Delta Force
Aplicación mobile desarrollada en flutter para misión tic 2022

social_net A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if th

HARDROCO 0 Nov 25, 2021
Projeto da disciplina IMD0509 - 2022.1

catalogo_filmes CATÁLOGO DE FILMES Projeto da Disciplina IMD0509 UFRN 2022.1 em Flutter. Grupo Hilton Thallyson João Paulo Braz Ocenildo Junior Execut

João Paulo Araujo Braz 3 Jul 13, 2022
Lime client built using flutter

** This project ist OUT OF DATE and I am currently not able to maintain it ** What we are building Lime is a social media app, which allows you to pos

Sebastian Sellmair 376 Dec 24, 2022
A simple and easy to use Redis client for Dart

redis_dart A simple and minimalist Redis client for Dart See it in pub: https://pub.dev/packages/redis_dart and GitHub: https://github.com/gabrielpach

Gabriel Pacheco 7 Dec 25, 2022
ThingsBoard PE API client library for Dart developers.

ThingsBoard PE API client library for Dart developers. It's compatible with TB PE 3.3.0. Usage A simple usage example: import 'package:thingsboard_pe_

ThingsBoard - Open-source IoT Platform 45 Sep 28, 2022
An architecture for dynamic UI without client deployment

Server Driven UI Demo Server Driven UI(SDUI)는 서버에서 클라이언트의 UI 컴포넌트를 관리하는 방식. 클라이언트 배포없이 API 응답을 변경하는 것만으로 UI 변경이 가능한 동시에 하위 호환성을 확보할 수 있다. Rust, GraphQ

Simon Park 15 Oct 17, 2022
Invoice Ninja client built with Flutter

Invoice Ninja Client app for the Invoice Ninja web app. Google Play Store: v4 | v5 Apple App Store: v4 | v5 Setting up the app Initialize the config f

Invoice Ninja 1.3k Dec 25, 2022
A simple, modern AppImageHub Client, powered by flutter.

AppImagePool Simple AppImageHub Client Main Features FLOSS and non profit app Simple categories Download from github directly, no extra-server involve

Prateek SU 490 Jan 1, 2023
Wallet Connect client in Dart.

Wallet Connect Wallet Connect client in dart highly inspired from wallet-connect-kotlin by Trust Wallet. Usage import 'package:wallet_connect/wall

null 101 Dec 29, 2022
Notion API client for dart

Notion API client for dart. See the ROADMAP file to see what is coming next. API implemented Usage NotionClient class Individual classes A few example

Jonathan Gómez 22 Oct 9, 2022
Figma API client written in pure Dart

figma A library for interacting with Figma APIs. Created from templates made available by Stagehand under a BSD-style license. Usage A simple usage ex

Arne Molland 14 Oct 19, 2022
An Android Client for ZeroNet Built With Flutter

ZeroNet Mobile ZeroNet Mobile is an Android Client for ZeroNet, a platform for decentralized websites using Bitcoin crypto and the BitTorrent network.

null 0 Nov 10, 2021
A Mastodon client built in Flutter

feathr A Mastodon client built in Flutter (in development). Contributing Pull requests are welcome. For major changes, please open an issue first to d

feathr.space 8 Nov 25, 2022
⚗️A privacy centric matrix client

a privacy centric matrix client - now in open alpha* Syphon is still in alpha and we do not recommend using it where proven and independently verified

Syphon 882 Dec 31, 2022
Chopper is an http client generator using source_gen and inspired from Retrofit.

Chopper Chopper is an http client generator for Dart and Flutter using source_gen and inspired by Retrofit. Documentation Installation Please refer to

Hadrien Lejard 632 Dec 31, 2022
NETCoreSync is a database synchronization framework where each client's local offline database

NETCoreSync NETCoreSync is a database synchronization framework where each client's local offline database (on each client's multiple devices) can be

Aldy J 65 Oct 31, 2022
A beautiful and cross platform NHentai Client, Support desktop and mobile phone

A beautiful and cross platform NHentai Client. Support desktop and mobile phone (Mac/Windows/Linux/Android/IOS).

null 324 Dec 29, 2022
A dart client for Supabase Realtime server.

realtime-dart Listens to changes in a PostgreSQL Database and via websockets. A dart client for Supabase Realtime server. Usage Creating a Socket conn

Supabase Community 76 Dec 14, 2022