| a[rel*="external"]::after { | a[rel*="external"]::after { | ||||
| content: " " url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20class='i-external'%20viewBox='0%200%2032%2032'%20width='14'%20height='14'%20fill='none'%20stroke='%23ff9800'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='9.38%'%3E%3Cpath%20d='M14%209%20L3%209%203%2029%2023%2029%2023%2018%20M18%204%20L28%204%2028%2014%20M28%204%20L14%2018'/%3E%3C/svg%3E"); | content: " " url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20class='i-external'%20viewBox='0%200%2032%2032'%20width='14'%20height='14'%20fill='none'%20stroke='%23ff9800'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='9.38%'%3E%3Cpath%20d='M14%209%20L3%209%203%2029%2023%2029%2023%2018%20M18%204%20L28%204%2028%2014%20M28%204%20L14%2018'/%3E%3C/svg%3E"); | ||||
| } | } | ||||
| nav a { | |||||
| padding: 2px; | |||||
| } | |||||
| nav a.active { | nav a.active { | ||||
| background-color: inherit; | background-color: inherit; | ||||
| color: #000; | color: #000; | ||||
| border-style: solid; | border-style: solid; | ||||
| height: 4rem; | height: 4rem; | ||||
| width: 4rem; | width: 4rem; | ||||
| } | |||||
| small { | |||||
| font-weight: 400; | |||||
| } | } |
| baseurl = "https://rohanverma.net/" # Controls base URL sitewide | baseurl = "https://rohanverma.net/" # Controls base URL sitewide | ||||
| languageCode = "en-US" # Controls site language | languageCode = "en-US" # Controls site language | ||||
| title = "rohanverma.net" # Homepage title and page title suffix | |||||
| title = "Rohan Verma" # Homepage title and page title suffix | |||||
| paginate = 11 # Number of posts to show before paginating | paginate = 11 # Number of posts to show before paginating | ||||
| disqusShortname = "rhnvrm" | disqusShortname = "rhnvrm" | ||||
| googleAnalytics = "UA-90695618-1" | googleAnalytics = "UA-90695618-1" |
| --- | |||||
| title: Presentation about upi.link at Barcamp Bangalore - Techlash | |||||
| author: Rohan Verma | |||||
| type: post | |||||
| date: 2019-02-03T12:38:24+00:00 | |||||
| url: blog/2019/02/03/presentation-bcb-upilink | |||||
| categories: | |||||
| - upi.link | |||||
| --- | |||||
| I recently got a chance to talk about [upi.link](https://upi.link)during | |||||
| [Techlash at Barcamp Bangalore](https://barcampbangalore.com/bcb/bcb-spring-2019/bcb-spring-2019-techlash/building-a-mobile-app-neutral-upi-request-link-generator-at-https-upi-link). | |||||
| I got to tell people about having started this small project. Here is the link to my presentation: | |||||
| <a href="https://upi.link/presentation/">Presentation</a> | |||||
| A small summary of [upi.link](https://upi.link) | |||||
| <blockquote> | |||||
| Introducing [upi.link](https://upi.link), which is is a Payment Service Provider (PSP) neutral | |||||
| UPI Request Link generator built upon the UPI Deeplinking Spec, enabling SMEs and individual users | |||||
| to collect payments directly by sharing links on chat apps or embedding on their own websites, | |||||
| without having to rely on building their own mobile apps and calling intents, making manual | |||||
| UPI requests on PSP apps, tying up with service aggregators that charge fees, or even | |||||
| purchasing licenses to APIs when they are just getting started. | |||||
| </blockquote> |
| --- | |||||
| title: upi.link - Progress Update 1 | |||||
| author: Rohan Verma | |||||
| type: post | |||||
| date: 2019-02-17T12:38:24+00:00 | |||||
| url: blog/2019/02/14/progress-update-1-upilink | |||||
| categories: | |||||
| - upi.link | |||||
| --- | |||||
| ## What am I building, in a sentence? | |||||
| 🔗upi.link: A programmable shortlink generator based on UPI (universal bank2bank payments service in 🇮🇳) sharable via social media & chat. | |||||
| ## What did I complete till now? | |||||
| ### Highlights | |||||
| #### Deployed at [upi.link](https://upi.link) | |||||
| I used AWS Free tier to deploy this website to reduce cost for hosting this. It uses AWS Lambda | |||||
| Functions to generate shortlinks which | |||||
| are stored inside Redis with a TTL of 3 Days. Authentication is | |||||
| implemented using a postgres backend along with secure cookies for sessions. | |||||
| I will port the lambda functions I wrote for | |||||
| shortlink generation out of AWS Lambda | |||||
| to my custom backend written in Golang as authentication. This is because | |||||
| I have seen that the cold start for Lambdas is pretty slow for my use case and takes about | |||||
| 5-6 seconds which for the users seems like 10 seconds. | |||||
| The frontend is written using Nuxt.js which is a Universal app framework on top of | |||||
| Vue and is similar to what Next.js is for React. This was a neccessity for this use case | |||||
| as I need the links shared on social media as well as chat with | |||||
| HTML OG (Open Graph) tags to be populated dynamically based on their content. The only other option | |||||
| was to write a static website served through templating either in Go (Go templates) | |||||
| or Python (Django/Flask using Jinja templates), but then I would not be able to utilize | |||||
| the rapid development offered by Vue/Nuxt. Also, I can now separate my API and frontend, maybe | |||||
| totally host the API proxied via <a href="https://github.com/apex/up">Apex/Up</a> | |||||
| and the frontend via | |||||
| S3 buckets to reduce the cost to host the site. | |||||
| #### Created a roadmap | |||||
| I shared this project with a few friends and groups and lots of feature requests | |||||
| as well ideas propped up. To keep a track of all these I created a public | |||||
| <a href="//trello.com/b/VynO9sAk">Trello Board</a>. You can <a href="mailto:[email protected]"> | |||||
| email to the board </a> for adding more feature requests. | |||||
| ### Features | |||||
| #### Donation Campaigns | |||||
| One of the major features this week, I added a campaign collection feature. | |||||
| The first campaign to be hosted is the <a href="https://upi.link/c/BharatKeVeer">#BharatKeVeer</a> | |||||
| campaign which was launched to collect funds for contributing to the | |||||
| wives of the CRPF Soldiers who lost their lives during the Pulwama terrorist attack. | |||||
| #### Temp Link Generator | |||||
| I updated the temporary link generator on the home page. Now you don't need to bother | |||||
| with the Long Link and you can directly see the page. | |||||
| #### Whatsapp/Telegram Share buttons | |||||
| Buttons for sharing on Whatsapp and Telegram were added below the generated shortlink | |||||
| #### UPI App compatible QR Code | |||||
| QR code with the embeded Deeplinking Intent is now displayed on the | |||||
| redirect page for people who open the link on their laptops/desktops | |||||
| so that they can simply scan the link from their phone. | |||||
| #### Emails via AWS SES | |||||
| My SES request for sending emails was approved, I added the email button | |||||
| behind authentication. | |||||
| ### 📌Misc | |||||
| #### Progress Blogs | |||||
| Well, this blog, honestly, I wanted to have a blog where I could track the progress on this | |||||
| project but I did not want to have another setup on say Ghost/Wordpress. So again Nuxt came | |||||
| to my rescue and now I just have to add a page to my Nuxt folder and it handles everything | |||||
| else such as routing etc. | |||||
| #### Recorded demo video 📹 | |||||
| You can view this video on [youtube](https://youtu.be/USK4UOn1Xkw) | |||||
| <iframe width="100%" height="480" src="https://www.youtube.com/embed/USK4UOn1Xkw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> |
| --- | |||||
| title: upi.link - Progress Update 2 | |||||
| author: Rohan Verma | |||||
| type: post | |||||
| date: 2019-02-24T12:38:24+00:00 | |||||
| url: blog/2019/02/24/progress-update-2-upilink | |||||
| categories: | |||||
| - upi.link | |||||
| --- | |||||
| ## Highlights | |||||
| I wanted to finish the underlying infrastructural things | |||||
| so that I can start to focus on the higher level | |||||
| features. | |||||
| ## Features | |||||
| ### Implemented User Profiles | |||||
| Added support for <a href="https://upi.link/profile">user profiles</a> this week. | |||||
| Now, I can extend the user authentication table with profile data. | |||||
| Since, I want to store minimal data about the users on my server, | |||||
| I have used gravatar to load the profile | |||||
| photo and as of now no other information other than email is stored. | |||||
| Maybe, next week based on user feedback | |||||
| I might save the preferred UPI VPA so that the user does not have to | |||||
| type it every time. | |||||
| ### Track generated links | |||||
| Now users can track the permanent links they have generated so that | |||||
| they don't have to create a new one every time. | |||||
| This same feature will be used to display links on the public | |||||
| profile which will be released next week. Also, | |||||
| users will be able to edit and delete these as well soon so they | |||||
| can be reused. | |||||
| ### Email preview | |||||
| Now, you can preview the email that will be sent beside the | |||||
| link generator on the <a href="https://upi.link/send">send page</a> in | |||||
| real time. I will add support to the profile page to send | |||||
| emails directly from there to multiple comma separated emails. | |||||
| ### Front page design | |||||
| The home page has improved quite a lot from what we started, | |||||
| now we have more details about the features and | |||||
| a more clearer text explaining what upi.link aims to become. | |||||
| {{ end }} | {{ end }} | ||||
| {{ define "main" }} | {{ define "main" }} | ||||
| <header> | <header> | ||||
| <h1>{{ .Title }}</h1> | |||||
| <h1>{{ .Title }} <small>(rhnvrm)</small></h1> | |||||
| </header> | </header> | ||||
| <div class="leader"> | <div class="leader"> | ||||
| <img src="/wp-content/uploads/me.jpg" class="myimage"> | <img src="/wp-content/uploads/me.jpg" class="myimage"> | ||||
| <div>Hello World 👋, I'm Rohan, and welcome to my homepage.</div> | |||||
| <div> | |||||
| Hello World 👋 <br> | |||||
| Welcome to my homepage. | |||||
| </div> | |||||
| </div> | </div> | ||||
| <br> | <br> | ||||
| <br> | <br> | ||||
| My blog is also available through <a href="https://rohanverma.net/blog/index.xml">[RSS]</a> | My blog is also available through <a href="https://rohanverma.net/blog/index.xml">[RSS]</a> | ||||
| {{ end }} | {{ end }} | ||||
| {{ define "footer" }} | {{ define "footer" }} | ||||
| {{ partial "powered-by.html" . }} | {{ partial "powered-by.html" . }} |