Git Product home page Git Product logo

discord-events's Introduction

Hi, I'm Alvyn. ๐Ÿ‘‹

  • ๐ŸŽ“ Bachelor's of Software Engineering - Concordia University (2020)
  • ๐Ÿ’ญ "A Leetcode a day keeps unemployment away" big lie i don't do that anymore
  • ๐ŸŒ Usually I tell people to visit me on my website
  • ๐ŸŒณ Open-source contributor

๐ŸŽพ ๐Ÿ’ ๐Ÿ‡จ๐Ÿ‡ฆ โ›ณ๏ธ โšฝ๏ธ ๐Ÿ” ๐Ÿค  ๐ŸŽฟ

Languages and Tools:

discord-events's People

Contributors

alvyn279 avatar dependabot[bot] avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

discord-events's Issues

Road Map

  • Infra:
    • Containerize Java application
    • Create ApplicationLoadBalancedEc2Service
    • Switch to public ECR repository
    • Set table name in CDK (maybe env var ?)
    • IMPORTANT: Check why health checks fail so often with task definition
    • IMPORTANT: Downgrade infrastructure to normal EC2 task without the load balancer and health
    • Why do some commands do not go through ?
      • Set up logs for container execution
    • Add log stream to container execution
    • NAT Gateway spendings (almost 2$ a day)
      • Documentation[1][2] We only need one public subnet that contains our single instance. Our route tables point to vpc endpoints for ddb interaction.
        desired low-level infra
      • VPC endpoints to DDB
      • Internet Gateway for Discord API WebSocket
    • Segregate infra into test DDB and prod DDB tables
    • Hot reload with docker-compose volumes
    • DDB index on messageId ?
    • Restart container on failure
    • Look into SSM for secrets
    • GitHub Action to build/deploy/update ECS service (see if this is necessary)
    • Health check server
    • Dockerize CDK
  • Bot:
    • Fix async issue on ping and create
    • Support multiple servers for DDB by adding guildId as attribute (redesign DDB)
    • List events
      • list upcoming
      • list between range
      • list on date
      • add created by in title of list item
    • Error handling (oops message)
    • Extract CommandReaction into a class other than DiscordEventsBot
    • Help command (sample usage)
    • Manage personal events
      • view my-events
      • return message id for delete
      • change title of bot response to have username of creator
      • Send PM for my-events instead of in public channel
    • Delete event
      • Delete multiple inline
    • Describing events with reactions
    • optional descriptions
    • Reminder messages
      • simple reminder
      • status command that tells which text channel is subscribed to the reminders
      • Make notifying delay configurable
      • current implementation won't work for reminding multiple servers !!
      • Support distributed systems arch
        Right now the singleton pattern for the scheduler only allows there to be a single instance servicing the bot at all times.
        Look into https://github.com/Discord4J/connect
    • Empty events message
    • Refactor ListDiscordEventsCommandArgs into more specific classes for each ddb repo op
    • Attendees
      • choose best way to store this info
      • string set must not be empty at write time
      • write repo functions
      • !attend-event + emoji reactions
      • Single-liner should be changed to show each event
      • remove reaction
      • mentions
      • add to every list function
      • help, readme
    • Important: Support more than one timezones (setting it manually)
    • Cache guild members fetch
    • Pluggable into any other Discord4J bot
    • Google Calendar and others
  • Documentation:
    • Screenshots in README
  • Tools:
    • linter for cdk

Takeaways

  1. For single-task services, setting the desired tasks count matters at creation and at deploy time
    Solution: Set to 0 before update as per docs.
    Better solution: USE DAEMON MODE !!
    aws/aws-cdk#5215
    aws/aws-cdk#12223
    aws/aws-cdk#11951
  2. NAT Gateway for persistent connections will eat your wallet.

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.