Coder Social home page Coder Social logo

cybrixin / birthday-card Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 15.35 MB

๐ŸŽ‚Wish your loved ones a very happy birthday & send them some joy with this birthday card.

Home Page: https://birthday.anweshan.dev

License: Other

HTML 22.45% JavaScript 1.19% TypeScript 49.35% CSS 13.63% SCSS 13.37%
firebase reactjs tailwind tailwindcss

birthday-card's Introduction

Birthday Card

โ€œThere was a star danced, and under that was I born.โ€

Much Ado About Nothing - William Shakespeare.

Staus Badge

Firebase hosting CI/CD

Table of Contents

"Closed greeting card with prompts"

A birthday is a very special occassion for anyone regardless of their age. Just send them this card and your special wishes to your friend (or foe), just to make them feel special ๐Ÿš€.

If it's your birthday, then you have my best wishes ๐Ÿ™๐Ÿป. Enjoy the day ๐ŸŽ‰, with a little dance ๐Ÿ’ƒ๐Ÿป with that special one and understand with one extra notch up your belt your duties have been extended by one โœจ.

It's your day from 0๏ธโƒฃ0๏ธโƒฃ:0๏ธโƒฃ0๏ธโƒฃ to 2๏ธโƒฃ3๏ธโƒฃ:5๏ธโƒฃ9๏ธโƒฃ and you should live to the fullest.

"Closed greeting card with prompts & song playing"

Demo ๐Ÿ‘

They say a demo is worth a thousand words. So if you head to the website ๐Ÿ”—https://birthday.cybrix.in, you would be greeted ๐Ÿ‘ฏโ€โ™‚๏ธ๐Ÿ‘ฏโ€โ™€๏ธ with a birthday card ๐ŸŽด.

License ๐Ÿ”‘

The project is open-source ๐Ÿ“– & used a MIT License ๐Ÿ—. For more info on the scope of a MIT License, please check ๐Ÿ”— https://choosealicense.com/licenses/mit/.

To get a copy ๐Ÿ–จ of the license included, please see LICENSE.md.

Quick Note ๐Ÿ“

I have included a ๐Ÿ’ก tips file. It contains trips & tricks which make my life & project a bit easier.

Resources used ๐Ÿ’ฟ

  1. Vite + React + Typescript & Tailwind CSS
  2. Firebase (Hosting & Storage) + Google ReCaptcha (AppCheck in Firebase & Site Protection)

V-R-T Stack with Tailwind CSS

ViteJS is a library of happiness in disguse. ViteJS uses Rollup for "packing & building" a site, which alone is excellent. Vitejs flaunts a HMR (Hot Module Replacement ๐Ÿ”ฅ) feature, without a loss in state ๐Ÿคฏ. It has open-source scaffolding for almost all popular front-end stacks (like React, Svelte and even VanillaJS & VanillaTS). It is my go to choice for all projects ๐Ÿ˜.

ReactJS is a library, I work with professionally ๐Ÿค๐Ÿป. I do not hate Vue or Svelte etc, by there is something comfortable ๐Ÿ›Œ๐Ÿป for me working with ReactJS. I would not argue it has plenty room for improvement ๐Ÿค” (and should be inspired from Next.js).

Typescript is one of the libraries I personally hated ๐Ÿคง. Over time โณ, I have realized ๐Ÿค” that extra piece of work ๐Ÿ’ง I have to do ahead during development saves me from bugs ๐Ÿ›. I am even more productive โš’ with Typescript, than without. P.S. It saves me from lot of embarrassment ๐Ÿ˜ณ ahead of time ๐Ÿ™‰.

Tailwind CSS is one of my favourite โฃ inline style builder ๐Ÿงฑ. The range of utility classes predefined & flexibility๐Ÿคบ is mind-blowing ๐Ÿ˜ต.

Why did I use Firebase ๐Ÿ”ฅ?

I have been using Firebase for a long time now as a BaaS. Firebase has it's pros ๐Ÿ™‚ and cons ๐Ÿ˜•, yet it is a strong contender ๐Ÿ’ช๐Ÿป in the field of BaaS providers.

Hosting

In my experience my Firebase Hosting ๐ŸŒ is quite fast and easy to deploy, with the free domains *.web.app and *.firebaseapp.com. The Firebase CLI ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป makes it extremely fast to deploy the same ๐Ÿš€. Before utilizing the main resources we can use a temporary preview channel to get a feel of the site in a real-world domain ๐Ÿ˜ฎ (not merely localhost where everything works and then breaks ๐Ÿ™„).

Storage

On the other hand, I am using Firebase Storage ๐Ÿ—„ as a Content Delivery Network for my assets ๐Ÿ–ผ. Secured by rules ๐Ÿ›ค my specific bucket ๐Ÿงบ (here birthday) is secure ๐Ÿ” from manipulation and can be read ๐Ÿ‘€ by everyone. Morever it is protected ๐Ÿ›ก by a token which is only generated if the request originates for whitelisted origins ๐Ÿ“ƒ. I can speak from my experience Storage in GCP is quite fast ๐Ÿ’จ (may be not the fastest) and get's my job done โœ….

AppCheck

AppCheck by Firebase is just a feature to verify ๐Ÿง all requests that originates for Firebase Resources (like Firestore, Storage, Functions etc...), are from whitelisted origins ๐Ÿ“ƒ. These origins are controlled seperately in the Google ReCaptcha V3 settings and the same secret ReCaptcha Key ๐Ÿคซ is shared with Firebase. On the other hand ๐ŸคŸ๐Ÿป, the client (i.e. your browser ๐Ÿ•ธ & my app ๐Ÿ“ฑ) knows the public/site key ๐Ÿ—ฃ. By knowlege ๐Ÿ“š (and high level stuff ๐ŸŒŠ), we know Google secures misuse ๐Ÿค resources.

Uses of ReCaptcha V3 Badge

In particular that part could be really be skipped ๐Ÿ˜‘. This site (or any other site using AppCheck) does not need any ReCaptcha Badge Protection ๐Ÿ›ก. As I did not include โŽ a privacy policy, this is my way of declare ๐Ÿ—ฃ, the site used ReCaptcha.

Alternatives of Firebase

  1. For hosting a static site you may continue with:
  2. For cloud storage for free, you may try

๐Ÿ‘†๐Ÿป Most Cloud Storage services are Backend as a Service (BaaS). They are very likely to provide Cloud Functions, Database Storage etc.


Discussion

I would someday ๐Ÿ“… like to further develop this with an admin ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป panel or something of that sort. That way I could issue random links ๐Ÿ”— for each of my friends. Their details (name, email and phone number) will be filled โœ๐Ÿป in dynamically.

Partial TODO ๐ŸŸจ

  • Partial SSR to create custom greetings.

TODO Map ๐Ÿ“

  • โญ๐Ÿ”ด Add my social links to the birthday site pointing to myself... ๐Ÿ–ฑ
  • ๐Ÿ”ด Know your audience:
    • Add a custom popup, to send a message to us directly (with feeback). If the user is known (due to dynamic link, no name is required).
    • โš  Server Side: Curating the feedback/message from the user to improve/thank them later.
  • ๐ŸŸก Admin Panel to make stuff dynamic.
  • ๐Ÿ”ต Dynamic URL linking (Optional)
  • ๐ŸŸก โš  Server Side: CRON job to read Firestore once everyday at 0๏ธโƒฃ0๏ธโƒฃ:0๏ธโƒฃ0๏ธโƒฃ (IST), to send out SMS and/or email via API with birthday greetings.

๐Ÿ”ด - High Priority

๐ŸŸก - Medium Priority

๐Ÿ”ต - Low Priority

โš  - Probably Server Side

โญ- Currently working on this.

Current Contributor(s)

  • Anweshan Roy Chowdhury: I go by the name @cybrix. This project is my solo undertaking ๐Ÿ™‚. Feel free to reach me out at [email protected]

Conclusion

I would like to conclude by saying, I loved developing this project. As always every project makes me learn something new.

3๏ธโƒฃ 2๏ธโƒฃ 1๏ธโƒฃ ... ๐Ÿš€๐Ÿš€๐Ÿš€ ... ๐ŸŽ‡๐ŸŒŸ

Developed with lots of love โค๏ธ,

Anweshan Roy Chowdhury.

birthday-card's People

Contributors

anweshandev avatar dependabot[bot] avatar

Watchers

 avatar

birthday-card's Issues

Add suggestions on touch device

  • Detect device dimensions width & height.
  • Detect if they interchange, will the viewport be enough.
  • Also suggest rotation only if device is mobile (or has touchpoints).

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.