Skip to content
View DanielLin9406's full-sized avatar
๐Ÿ˜ƒ
๐Ÿ˜ƒ

Organizations

@lazy-stock-screener-demo

Block or report DanielLin9406

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
DanielLin9406/README.md

In a hurry

Top 3 projects that showcases my learning:

  1. LZStock (This is the one you must check if you have to pick one)
  2. Data Pipeline
  3. Price Dashboard

๐Ÿ“‚ Portfolios

Full-stack: LZStock

(Now is on Stage 1)

LZStock is a stock screener that saves you time to help you make decisions quickly.

๐–๐ก๐š๐ญ ๐ข๐ฌ ๐ญ๐ก๐ข๐ฌ?

  • This is a self-initiated project built to demonstrate my comprehensive understanding of how to construct a fundamental, general-purpose, production-ready system.
  • I chose an interesting topic: A US stock screener based on financial statements sourced from www.sec.gov.
  • This project centers on developing a foundational framework, exploring best practices, and acquiring experience through genuine challenges.

๐‡๐จ๐ฐ ๐ข๐ฌ ๐ญ๐ก๐ข๐ฌ ๐ฉ๐ซ๐จ๐ฃ๐ž๐œ๐ญ ๐ฎ๐ง๐ข๐ช๐ฎ๐ž?

  • Encompassed the entire development lifecycle, from initial design through to final deployment.
  • Leveraged DDD (Domain-Driven Design) to design the Domain and Bounded Context based on business requirements.
  • I personally owned this product and built it single-handedly within 100 days.

๐๐ซ๐จ๐๐ฎ๐œ๐ญ ๐–๐ž๐›๐ฌ๐ข๐ญ๐ž๐ฌ

  • Visit the website and play: LZstock

๐“๐ž๐œ๐ก ๐๐ฅ๐จ๐ 

๐ˆ๐ง๐ญ๐ž๐ซ๐ž๐ฌ๐ญ๐ข๐ง๐  ๐Ÿ๐ข๐ง๐๐ข๐ง๐ ๐ฌ

  • Golang's type alias mechanism is suitable for DDD, as it allows defining rich domain types without the performance or memory footprint of creating complex structs.
  • The test strategy is enhanced by DDD because its domain objects are structured as self-contained units, facilitating straightforward unit testing without external dependencies.

๐…๐ข๐ซ๐ฌ๐ญ ๐’๐ญ๐š๐ ๐ž ๐…๐ž๐š๐ญ๐ฎ๐ซ๐ž๐ฌ

  • Smart Watchlists for flexible grouping
  • An autocomplete search with a ternary search tree from the ground up
  • Real-Time Tracking (mocking source)
  • Secure Authentication
  • Mobile-ready application

๐‡๐ข๐ ๐ก-๐ฅ๐ž๐ฏ๐ž๐ฅ ๐“๐ž๐œ๐ก๐ง๐ข๐œ๐š๐ฅ ๐ƒ๐ž๐ฌ๐ข๐ ๐ง

  • A monorepo codebase with 15 Golang-based microservices deployable on Kubernetes (K8S)
  • High-level design is composed of application-level and infrastructure-level components.
  • Explored and implemented critical application-level topics, including: API Design and Versioning, Use Cases and Controllers, Algorithm, Data Query, Concurrency, Error Handling, Testing Strategies, Database Optimization and Selection, and Security.
  • Investigated and applied common infrastructure-level principles, such as: Fault Tolerance, High Availability and Scalability, Networking and Protocols, Cloud and DevOps, Monitoring and Observability
  • For a detailed explanation of the 'what', please refer to the LZStock Tech Blog.

๐‹๐จ๐ฐ-๐ฅ๐ž๐ฏ๐ž๐ฅ ๐“๐ž๐œ๐ก๐ง๐ข๐œ๐š๐ฅ ๐ƒ๐ž๐ฌ๐ข๐ ๐ง

  • Low-level design topics expand upon high-level concepts, focusing primarily on coding-related aspects, design patterns, and best practices.
  • For a detailed explanation of the 'what' and 'how,' please refer to the LZStock Tech Blog.

๐“๐ž๐œ๐ก ๐’๐ญ๐š๐œ๐ค
๐˜๐˜ณ๐˜ฐ๐˜ฏ๐˜ต ๐˜Œ๐˜ฏ๐˜ฅ (react-based)
โžข Custom Webpack+ Babel stack
โžข React Hooks/TanStack Router/Jotai/React in Typescript
โžข Static hosting on Vercel via CircleCI deployment.

๐˜š๐˜ฆ๐˜ณ๐˜ท๐˜ฆ๐˜ณ ๐˜š๐˜ช๐˜ฅ๐˜ฆ (golang-based microservices)
โžข Golang gRPC Server
โžข FastHttp as a Gateway
โžข WebSocket service with gRPC server stream to push session-based stock price
โžข NATs-JetStream for async-communication
โžข PostgreSQL, Redis

๐˜‹๐˜ฆ๐˜ท-๐˜–๐˜ฑ๐˜ด
โžข CircleCI
โžข Terraform manage infrastructure configuration
โžข Helm Chart handle deployments for each service
โžข Gitlab Container Registry
โžข K8S on GCP
โžข GKE + CloudFlare + Vercel


๐–๐ก๐š๐ญ ๐ข๐ฌ ๐ญ๐ก๐ข๐ฌ?

  • A streamlined data pipeline that leverages an ETL process to screen companies using raw financial data from Morningstar Excel files, outputting a range of first-level and second-level indicators directly to Google Sheets.

๐…๐ž๐š๐ญ๐ฎ๐ซ๐ž

  • Modular ETL Pipeline: A clean separation of concerns between Data Ingestion (Local/API), Transformation (Financial Indicator Calculation), and Loading (Google Sheets/Databases).
  • Advanced Financial Analysis: Implements various valuation models and indicators, including DCF, Graham Number, DDM, and more.

๐“๐ž๐œ๐ก ๐ˆ๐—ฑ๐—ฒ๐—ฎ

  • Robust Design Pattern Implementation: The project leverages a wide array of design patterns (Factory, Observer, Command, Strategy, Builder, Mediator), reflecting advanced proficiency in software architecture and code maintainability.
  • Strict Separation of Concerns (SoC): Each architectural layerโ€”from data sources and core calculations to the final deliveryโ€”is clearly defined, ensuring modularity and easier debugging.
  • Architected for Scalability: By prioritizing ABCs and Strategy patterns, the framework simplifies future enhancements, making it straightforward to add new financial indicators or complex valuation algorithms.

๐“๐ž๐œ๐ก ๐’๐ญ๐š๐œ๐ค
๐˜š๐˜ต๐˜ฐ๐˜ณ๐˜ข๐˜จ๐˜ฆ
โžข Google Sheet

๐˜‹๐˜ข๐˜ต๐˜ข ๐˜—๐˜ช๐˜ฑ๐˜ฆ๐˜ญ๐˜ช๐˜ฏ๐˜ฆ
โžข Leverage design patterns such as Factory, Strategy, Mediator, Observer, Chain of Responsibility, and Builder.

๐๐จ๐ญ๐ž:

  • A complete version resides in the secFinancialReportScraper folder.

Skills: Python ยท Google Sheet API


Full-stack: Price Dashboard

๐–๐ก๐š๐ญ ๐ข๐ฌ ๐ญ๐ก๐ข๐ฌ?

  • An internal SPA for the purpose of setting and reading prices in terms of each product in the online shop.

๐—ช๐—ต๐—ฎ๐˜ ๐—บ๐—ฎ๐—ธ๐—ฒ ๐˜๐—ต๐—ถ๐˜€ ๐—ฝ๐—ฟ๐—ผ๐—ท๐—ฒ๐—ฐ๐˜ ๐—ฑ๐—ถ๐—ณ๐—ณ๐—ฒ๐—ฟ๐—ฒ๐—ป๐˜ ๐—ณ๐—ฟ๐—ผ๐—บ ๐—ผ๐˜๐—ต๐—ฒ๐—ฟ ๐—ฝ๐—ฒ๐—ผ๐—ฝ๐—น๐—ฒ'๐˜€ ๐˜€๐—ถ๐—ฑ๐—ฒ ๐—ฝ๐—ฟ๐—ผ๐—ท๐—ฒ๐—ฐ๐˜?

  • A complete full stack project

๐…๐ž๐š๐ญ๐ฎ๐ซ๐ž

  • Implemented 3-party API of Googleโ€™s spreadsheet API with OAuth2/API keys authorization to my personal website.

๐“๐ž๐œ๐ก ๐ˆ๐—ฑ๐—ฒ๐—ฎ

  • Developed and built up Price Dashboard from a front-end project with SPA feature to a full-stack project with microservice architecture and fully CRUD operations.

๐—ง๐—ฒ๐—ฐ๐—ต ๐—ฆ๐˜๐—ฎ๐—ฐ๐—ธ
๐˜๐˜ณ๐˜ฐ๐˜ฏ๐˜ต ๐˜Œ๐˜ฏ๐˜ฅ
โžข Custom Webpack+ Babel stack
โžข React Hooks, React Router, Redux, React SSR, dynamic import

๐˜š๐˜ฆ๐˜ณ๐˜ท๐˜ฆ๐˜ณ ๐˜š๐˜ช๐˜ฅ๐˜ฆ
โžข Node.js Ecosystem: Express, Typescript, Chi+Mocha, Sequelize, Mongoose
โžข DB/Cache: MongoDB, Redis

Dev-Ops
โžข Travis CI
โžข Container: Docker, Docker-Compose
โžข Reverse-Proxy: Nginx
โžข Terraform

๐˜Š๐˜ญ๐˜ฐ๐˜ถ๐˜ฅ
โžข AWS: ECS

Skills: JavaScript ยท Docker ยท Redis ยท Travis CI ยท Mocha (JavaScript Framework) ยท Webpack ยท React.js ยท Mongoose ODM ยท Nginx ยท Bash ยท Node.js


๐–๐ก๐š๐ญ ๐ข๐ฌ ๐ญ๐ก๐ข๐ฌ?

  • Upgraded version of a email promotion and monitor system based on Stephergrinder's email sender. Solely to practice the cutting edge tech stack.

๐‡๐จ๐ฐ ๐ข๐ฌ ๐ญ๐ก๐ข๐ฌ ๐ฉ๐ซ๐จ๐ฃ๐ž๐œ๐ญ ๐ฎ๐ง๐ข๐ช๐ฎ๐ž?

  • Learning to build a full-stack proejct

๐“๐ž๐œ๐ก ๐ˆ๐—ฑ๐—ฒ๐—ฎ

  • Use Webpack-dev-server to proxy all api services and websocket connection.
  • Use express as static file server in production and handle websocket connection.
  • A express project in company with graphql+socket.io
  • A express project in company with apollo-server+socket.io
  • Update api service file structure from technical role to self-contained components.
  • Refractor api service from common.js to ES6 import syntax

๐“๐ž๐œ๐ก ๐’๐ญ๐š๐œ๐ค
๐˜๐˜ณ๐˜ฐ๐˜ฏ๐˜ต ๐˜Œ๐˜ฏ๐˜ฅ
โžข Custom Webpack+ Babel stack
โžข React Hooks, React Router, Redux, dynamic import
โžข WebSocket by Socket
โžข Husky+Lint-stage

๐˜š๐˜ฆ๐˜ณ๐˜ท๐˜ฆ๐˜ณ ๐˜š๐˜ช๐˜ฅ๐˜ฆ
โžข Node.js Ecosystem: Express, Chi+Mocha, Mongoose
โžข WebSocket by Socket.io
โžข GraphQL by express-graphql or apollo-server
โžข DB/Cache: MongoDB

๐’๐ค๐ข๐ฅ๐ฅ๐ฌ: JavaScript ยท Websocket ยท Nginx ยท Docker ยท Travis CI


Front-End: Mix Dan Studio

๐–๐ก๐š๐ญ ๐ข๐ฌ ๐ญ๐ก๐ข๐ฌ?

  • Refactored version of my very first website with OAuth 2.0 and Google Sheet API integrated.

๐‡๐จ๐ฐ ๐ข๐ฌ ๐ญ๐ก๐ข๐ฌ ๐ฉ๐ซ๐จ๐ฃ๐ž๐œ๐ญ ๐ฎ๐ง๐ข๐ช๐ฎ๐ž?

  • The first task involved transforming a static website into a server-hosted one with third-party API integration.

๐“๐ž๐œ๐ก ๐ˆ๐—ฑ๐—ฒ๐—ฎ

  • Multi-entry webpack
  • Write a replace image path webpack plugin
  • Implement OAuth 2.0 and API keys to authorize user.
  • Implement Google Sheet API

๐“๐ž๐œ๐ก ๐’๐ญ๐š๐œ๐ค ๐˜๐˜ณ๐˜ฐ๐˜ฏ๐˜ต ๐˜Œ๐˜ฏ๐˜ฅ
โžข Webpack
โžข Pug template
โžข WebSocket by Socket
โžข Husky+Lint-stage

๐˜š๐˜ฆ๐˜ณ๐˜ท๐˜ฆ๐˜ณ ๐˜š๐˜ช๐˜ฅ๐˜ฆ
โžข Express
โžข Google Sheet API

Skills: JavaScript ยท Google Sheet API ยท Node.js

Pinned Loading

  1. fullstack-priceDashboard fullstack-priceDashboard Public

    An internal SPA for the purpose of setting and reading prices in terms of each product in the online shop with microservice approach.

    JavaScript 1 1

  2. worker-financialReportScreenr worker-financialReportScreenr Public

    A SEC financial report is input and a well-organized table is output to Google Sheet.

    Python

  3. fullstack-emailSender-upgraded fullstack-emailSender-upgraded Public

    Upgraded version of a email promotion and monitor system based on Stephergrinder's fullstackreactcode. Solely to practice the cutting edge tech stack.

    JavaScript

  4. frontend-mixDanStudio frontend-mixDanStudio Public

    Refactored version of my very first website.

    SCSS 1