added certificate verification page

This commit is contained in:
sairaj mote 2022-12-10 02:04:33 +05:30
parent 8f2e3c195f
commit 3ad124ea65
4 changed files with 135 additions and 521 deletions

File diff suppressed because one or more lines are too long

View File

@ -63,11 +63,6 @@
</p>
</div>
<button class="outlet-label">
<!-- <svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<path fill="none" d="M0 0h24v24H0z" />
<path
d="M21 13.242V20h1v2H2v-2h1v-6.758A4.496 4.496 0 0 1 1 9.5c0-.827.224-1.624.633-2.303L4.345 2.5a1 1 0 0 1 .866-.5H18.79a1 1 0 0 1 .866.5l2.702 4.682A4.496 4.496 0 0 1 21 13.242zm-2 .73a4.496 4.496 0 0 1-3.75-1.36A4.496 4.496 0 0 1 12 14.001a4.496 4.496 0 0 1-3.25-1.387A4.496 4.496 0 0 1 5 13.973V20h14v-6.027zM5.789 4L3.356 8.213a2.5 2.5 0 0 0 4.466 2.216c.335-.837 1.52-.837 1.856 0a2.5 2.5 0 0 0 4.644 0c.335-.837 1.52-.837 1.856 0a2.5 2.5 0 1 0 4.457-2.232L18.21 4H5.79z" />
</svg> -->
<span class="outlet-label__name">Outlet</span>
<span class="outlet-label__no"></span>
<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">

View File

@ -47,20 +47,6 @@
</a>
<theme-toggle></theme-toggle>
</header>
<section class="banner">
<p class="banner__text">
We are servicing current customers only. A new Blockchain-based version of Bob's Fund will be available
soon.
</p>
<button class="close-button" onclick="this.parentNode.remove()">
<svg class="icon icon-only close-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24"
height="24">
<path fill="none" d="M0 0h24v24H0z" />
<path
d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z" />
</svg>
</button>
</section>
<div id="outlet_switcher" class="grid gap-1-5 hide-completely">
<div class="flex align-center">
<!-- <svg class="icon button__icon--left" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24"
@ -83,186 +69,19 @@
<main class="page">
<section class="outlet-hero-section margin-bottom-3r">
<h2 class="h2 weight-900 margin-bottom-1r text-center">Bob's Fund</h2>
</section>
<section class="features-grid">
<div class="feature">
<div class="feature__icon">
<svg class="icon" id="f47905c4-be19-4535-912c-ac0a41d5362d" data-name="Layer 1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<path
d="M55.59,38a10.43,10.43,0,0,0-3.09-4.19,12.61,12.61,0,0,0-5.4-2.46,11.57,11.57,0,0,0,5.75-4.7,13.39,13.39,0,0,0,1.86-7q0-7.62-5.86-11.46c-3.64-2.39-8.62-3.65-14.91-3.82V0H25.38V4.28H21.7V0H13.14V4.28H7.42v7.84l5.75,1.22V50.7L7.42,51.91v7.81h6.69V64h8.56V59.72h3.68V64h8.56V59.72h.42q10.37,0,15.8-4.15t5.45-12.3A14.09,14.09,0,0,0,55.59,38ZM41.35,21.11A5.14,5.14,0,0,1,39,25.77q-2.34,1.52-7.07,1.51h-5.4V14.48h6q4.45,0,6.65,1.58A5.81,5.81,0,0,1,41.35,21.11ZM41.29,48q-2,1.56-6,1.56H26.54V36.11H36a9.61,9.61,0,0,1,4.19.78,5,5,0,0,1,2.36,2.36,9.14,9.14,0,0,1,.76,4A5.66,5.66,0,0,1,41.29,48Z" />
</svg>
</div>
<h4 class="feature__title">Bitcoin linked</h4>
<p class="feature__brief">Bob's Fund is a 20 year long term Bitcoin price linked product</p>
</div>
<div class="feature feature--wide">
<div class="feature__icon">
<svg class="icon" id="a0972e55-309b-4721-ab64-f0e363b1245c" data-name="Layer 1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<path
d="M32,11.86a18.06,18.06,0,1,0,18,18.06A18.08,18.08,0,0,0,32,11.86Zm8.45,14.45-9.57,9.57a1.65,1.65,0,0,1-1.17.48,1.67,1.67,0,0,1-1.18-.48l-5-5a1.66,1.66,0,0,1,2.35-2.35l3.81,3.8L38.1,24a1.66,1.66,0,1,1,2.35,2.35Z" />
<path
d="M59.42,26.2a5.89,5.89,0,0,0-3.05-9.4h0a5.89,5.89,0,0,1-4.37-6A5.89,5.89,0,0,0,44,5a5.89,5.89,0,0,1-7.07-2.29h0a5.88,5.88,0,0,0-9.88,0A5.89,5.89,0,0,1,20,5a5.89,5.89,0,0,0-8,5.81h0a5.89,5.89,0,0,1-4.37,6,5.89,5.89,0,0,0-3,9.4h0a5.91,5.91,0,0,1,0,7.43A5.89,5.89,0,0,0,7.63,43,5.88,5.88,0,0,1,12,48.94L6.37,58.68a.34.34,0,0,0,.29.51l5.14.05a.34.34,0,0,1,.29.17l2.61,4.42a.33.33,0,0,0,.58,0l5.28-9.14a5.87,5.87,0,0,1,6.5,2.45h0a5.88,5.88,0,0,0,9.88,0h0a5.87,5.87,0,0,1,6.5-2.45l5.28,9.14a.33.33,0,0,0,.58,0l2.61-4.42a.34.34,0,0,1,.29-.17l5.14-.05a.34.34,0,0,0,.29-.51L52,48.94A5.88,5.88,0,0,1,56.37,43a5.89,5.89,0,0,0,3.05-9.4A5.91,5.91,0,0,1,59.42,26.2ZM32,50A20.06,20.06,0,1,1,52.06,29.92,20.08,20.08,0,0,1,32,50Z" />
</svg>
</div>
<h4 class="feature__title">Better returns than conventional assets</h4>
<p class="feature__brief">Over a very long time period, Bitcoin returns should outstrip returns on
conventional assets like real estate and stocks</p>
</div>
<div class="feature feature--wide">
<div class="feature__icon">
<svg class="icon" id="a9cf0968-17a3-4e2e-8dcf-10d366d12d28" data-name="Layer 1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<path
d="M17.28,29a16.35,16.35,0,0,1-7.63-1.64,11.32,11.32,0,0,1-4.77-4.54,13.17,13.17,0,0,1-1.63-6.61V12.88A13.3,13.3,0,0,1,4.88,6.25,11.52,11.52,0,0,1,9.6,1.67,15.9,15.9,0,0,1,17.2,0a15.94,15.94,0,0,1,7.63,1.67,11.43,11.43,0,0,1,4.71,4.55,13.5,13.5,0,0,1,1.6,6.66v3.29a13.36,13.36,0,0,1-1.6,6.61,11.33,11.33,0,0,1-4.68,4.54A16,16,0,0,1,17.28,29Zm0-8a3.94,3.94,0,0,0,3.21-1.39,5.13,5.13,0,0,0,1.16-3.4V12.88a5.31,5.31,0,0,0-1.16-3.47A4,4,0,0,0,17.2,8a3.94,3.94,0,0,0-3.27,1.41,5.35,5.35,0,0,0-1.14,3.47v3.29A5.11,5.11,0,0,0,14,19.59,4.09,4.09,0,0,0,17.28,21Zm3,37.61-6.93-3.43L43.76,6.46,50.7,9.88ZM46.89,64a16.15,16.15,0,0,1-7.64-1.67,11.75,11.75,0,0,1-4.81-4.58,13,13,0,0,1-1.67-6.58V47.91a13.19,13.19,0,0,1,1.63-6.58,11.41,11.41,0,0,1,4.77-4.58,16.11,16.11,0,0,1,7.63-1.67,16,16,0,0,1,7.6,1.65,11.39,11.39,0,0,1,4.72,4.55,13.3,13.3,0,0,1,1.63,6.63v3.26a13.5,13.5,0,0,1-1.61,6.63,11.29,11.29,0,0,1-4.68,4.55A15.87,15.87,0,0,1,46.89,64Zm0-8c1.68,0,2.81-.42,3.4-1.26a6.33,6.33,0,0,0,.88-3.61V47.91a5.31,5.31,0,0,0-1.12-3.42,3.88,3.88,0,0,0-3.25-1.41,4,4,0,0,0-3.33,1.41,5.31,5.31,0,0,0-1.12,3.42v3.26a4.93,4.93,0,0,0,1.33,3.42A4.17,4.17,0,0,0,46.89,56Z" />
</svg>
</div>
<h4 class="feature__title">Get 100% of gains</h4>
<p class="feature__brief">Investors are entitled to 100% of Bitcoin price gains</p>
</div>
<div class="feature">
<div class="feature__icon">
<svg class="icon" id="b25d5f7d-dd5a-4cc1-a2c9-37dbecdeaff1" data-name="Layer 1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<path
d="M32.11,64q-10.12,0-16-6.41t-5.9-19V25.46q0-12.56,5.9-19T32,0Q42,0,47.89,6.45t5.92,19V38.58q0,12.6-5.87,19T32.11,64Zm0-11.41a5.53,5.53,0,0,0,5-3q1.76-3,1.75-10.15V24.52c0-4.67-.6-8-1.79-10a5.87,5.87,0,0,0-10.26,0q-1.76,3-1.75,10.06V39.43q0,7.18,1.75,10.17A5.7,5.7,0,0,0,32.11,52.59Z" />
</svg>
</div>
<h4 class="feature__title">No management fee</h4>
<p class="feature__brief">The management fees on this product is zero</p>
</div>
<div class="feature">
<div class="feature__icon">
<svg class="icon" id="e0287cba-7cef-4217-aee4-c8ac3e32d7a5" data-name="Layer 1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<path
d="M49.52,20.65a1,1,0,0,1,0-1.16L56.94,9a1,1,0,0,0-.83-1.58H18.32V2.52a2.52,2.52,0,1,0-5,0V59H9.4a2.52,2.52,0,1,0,0,5H22.21a2.52,2.52,0,0,0,0-5H18.32V32.73H56.11a1,1,0,0,0,.83-1.59Z" />
</svg>
</div>
<h4 class="feature__title">Aligned goals</h4>
<p class="feature__brief">RanchiMall earns by having invested an equal amount as every investor, thus
the interests of fund manager, and fund investors are totally aligned</p>
</div>
</section>
<div class="rooms__header">
<h4 class="room__label">Rooms</h4>
</div>
<section class="rooms-layout">
<div id="expanding_tile" class="hide-completely"></div>
<a class="room-tile room-tile--main" href="#performance_room">
<div class="tile-content">
<svg class="room-tile__icon" id="b23be00b-0d64-4bed-9d99-6f7aaf421af4" data-name="Layer 1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<path
d="M44.53,26.6a7.17,7.17,0,1,1,5.07-2.1h0A7.16,7.16,0,0,1,44.53,26.6Zm0-11.47a4.31,4.31,0,1,0,3,1.26A4.31,4.31,0,0,0,44.53,15.13Z" />
<path
d="M62.58,1.38A4.7,4.7,0,0,0,58.35.09L45.09,2.66a14.61,14.61,0,0,0-7.56,4L19.92,24.29l-9,2.23a8.75,8.75,0,0,0-4.1,2.31L.46,35.2a1.43,1.43,0,0,0,1,2.44h.08L10,37.2l1.67,1.68L6.85,41.23a1.43,1.43,0,0,0-.38,2.3l14,14a1.44,1.44,0,0,0,1,.42l.24,0a1.47,1.47,0,0,0,1.05-.78l2.35-4.79,1.61,1.6-.45,8.58a1.43,1.43,0,0,0,.85,1.38,1.51,1.51,0,0,0,.58.12,1.44,1.44,0,0,0,1-.42l6.37-6.36a8.75,8.75,0,0,0,2.31-4.1l2.23-9,17.7-17.7a14.5,14.5,0,0,0,4-7.56L63.87,5.61A4.7,4.7,0,0,0,62.58,1.38ZM21,54.05,9.91,42.92,13.78,41,23,50.18ZM8.85,30.86a5.82,5.82,0,0,1,2.76-1.56L16,28.21,10.23,34l-.37.37-4.74.25ZM34.58,52.43A5.89,5.89,0,0,1,33,55.19l-3.74,3.73.25-4.74,6.13-6.13Zm20.68-28-18,18h0l-9,9-7.85-7.86-5.31-5.3h0l-2.55-2.54,27-27a11.72,11.72,0,0,1,5.38-3L58.3,19A11.64,11.64,0,0,1,55.26,24.41Zm5.8-19.34L59,15.68,48.28,5,58.89,2.9a1.85,1.85,0,0,1,2.17,2.17Z" />
<path
d="M2.63,62.76a1.41,1.41,0,0,1-1-.41,1.44,1.44,0,0,1,0-2l8.12-8.13a1.44,1.44,0,0,1,2,2L3.64,62.35A1.42,1.42,0,0,1,2.63,62.76Z" />
<path
d="M10.75,62.76a1.43,1.43,0,0,1-1-2.44l4.06-4.07a1.43,1.43,0,0,1,2,2l-4.06,4.06A1.43,1.43,0,0,1,10.75,62.76Z" />
<path
d="M2.63,54.64a1.43,1.43,0,0,1-1-2.44l4.07-4.06a1.43,1.43,0,0,1,2,2L3.65,54.22A1.44,1.44,0,0,1,2.63,54.64Z" />
</svg>
<!-- <img class="room-tile__icon" src="./assets/illustrations/performance.svg" alt=""> -->
<h4 class="room-tile__title">Performance</h4>
</div>
</a>
<a class="room-tile" href="#product_room">
<div class="tile-content">
<svg class="room-tile__icon" id="b76bf456-6b89-4220-8b44-f4f7d833bad6" data-name="Layer 1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<path
d="M61.28,22.11c0-.05,0-.09,0-.14L58.62,6A1.68,1.68,0,0,0,57,4.6H7A1.68,1.68,0,0,0,5.38,6L2.72,22c0,.05,0,.09,0,.14s0,.09,0,.14V57.72A1.68,1.68,0,0,0,4.38,59.4H59.62a1.68,1.68,0,0,0,1.68-1.68V22.25C61.3,22.2,61.28,22.16,61.28,22.11Zm-3.64-1.54H39.34L38.51,8h17ZM27.92,23.93h8.16v6.64L33,28.41a1.7,1.7,0,0,0-1.9,0l-3.13,2.16ZM35.15,8,36,20.57H28L28.91,8ZM8.46,8H25.55l-.88,12.61H6.36ZM57.94,56H6.06V23.93h18.5v9.84a1.67,1.67,0,0,0,2.63,1.38L32,31.84l4.81,3.31a1.65,1.65,0,0,0,.95.3,1.76,1.76,0,0,0,.78-.19,1.68,1.68,0,0,0,.9-1.49V23.93h18.5Z" />
</svg>
<h4 class="room-tile__title">Product</h4>
</div>
</a>
<a class="room-tile" href="#purchase_room">
<div class="tile-content">
<svg class="room-tile__icon" id="bb329e59-3d30-49a7-ac0d-b164d3b3b631" data-name="Layer 1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<path
d="M42.74,64a14,14,0,1,1,14-14A14,14,0,0,1,42.74,64Zm0-24.73A10.7,10.7,0,1,0,53.44,50,10.71,10.71,0,0,0,42.74,39.27Z" />
<path
d="M28.7,50H14.08a3.43,3.43,0,0,1-3.42-3.58l1.4-31.51h4.85V17.8a1.71,1.71,0,1,0,3.42,0V14.88H33V17.8a1.71,1.71,0,1,0,3.42,0V14.88h4.84L42.2,36c.18,0,.35,0,.54,0a13.92,13.92,0,0,1,2.9.31l-1.1-24.8H36.42V9.76a9.76,9.76,0,1,0-19.51,0v1.69H8.79L7.24,46.24a6.85,6.85,0,0,0,6.84,7.15H29.14A14.24,14.24,0,0,1,28.7,50ZM20.33,9.76A6.34,6.34,0,1,1,33,9.76v1.69H20.33Z" />
<path
d="M41.23,54.65a1.69,1.69,0,0,1-1.18-.49l-3-3a1.67,1.67,0,0,1,2.35-2.36l1.84,1.84,4.85-4.85a1.66,1.66,0,0,1,2.35,2.35l-6,6A1.67,1.67,0,0,1,41.23,54.65Z" />
</svg>
<!-- <img class="room-tile__icon" src="./assets/illustrations/purchase.svg" alt=""> -->
<h4 class="room-tile__title">Buy</h4>
</div>
</a>
</section>
<section class="room-container hide-completely page-layout">
<header class="room-container__header">
<button class="grid flow-column gap-1 align-center" onclick="hideRoom()">
<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<path fill="none" d="M0 0h24v24H0z" />
<path d="M7.828 11H20v2H7.828l5.364 5.364-1.414 1.414L4 12l7.778-7.778 1.414 1.414z" />
</svg>
<h3 id="room_title" class="hide-completely"></h3>
</button>
</header>
<h1 id="hero_title"></h1>
<section class="room-carousel">
<section id="performance_room" class="grid room">
<p>Bobs fund different fund release timeline</p>
<ul id="bobs_fund_timeline" class="timeline-container"></ul>
</section>
<section id="product_room" class="grid room">
<p class="margin-bottom-3r">
Bobs Fund allows customers to take a direct share in Bitcoin and they are automatically guided
into a
long term investment plan. Bitcoin is a long term investors paradise with supply artificially
constrained, and demand only growing. There are no price guarantees in this product. But the
long
duration of the investment ensures that customers will get an outsized rate of return.
RanchiMall as
Fund Manager does not charge management fees.
</p>
<h4 class="h4 margin-bottom-1r">Risk Management</h4>
<p class="margin-bottom-3r">
There is no price risk for RanchiMall in Bobs Fund. But since this is a long term
product, information security risks are high to maintain Bitcoins safely. Bitcoin keys must be
split
using Shamir Secret Key Share algorithm, and should be recombined at the time of redemption. The
number of shares should have enough redundancy so that if some holders are not around, the keys
must still be recovered.
</p>
<h4 class="h4 margin-bottom-1r">Founder Notes</h4>
<p class="margin-bottom-3r">
Bobs Fund was first issued in my MBA classmates WhatsApp group, and restricted only to my
classmates in June 2017. The product had a long term duration of 20 years, and it needed lot of
trust
which my classamtes had in me. We kept this product concept under observation and testing for 4
years, before exploring options to make it public. Another objective was to try out an idea
where
fund management expenses are nil, as fund management fees eats up a lot of customer returns over
long term. Instead we made an equal investment as every contributing member did, and we hope to
earn over the long life time of this product. Over time we realized, we could also use the
Bitcoin as
collateral for DeFi products, and that gives us an additional earning stream.
</p>
</section>
<section id="purchase_room" class="grid room">
<sm-button variant="primary">Buy here</sm-button>
</section>
</section>
<footer class="room-container__footer">
<h4>Related rooms</h4>
<div id="room_switcher"></div>
</footer>
</section>
<section>
<a class="ext-link-tile" href="https://ranchimall.github.io/bobs-fund/" target="_blank">
<div class="grid">
<h4 class="tile__title">See Bob's Fund in action</h4>
<p class="tile__brief">Visit the website to see investors and asset performance</p>
</div>
<button class="round">Visit</button>
</a>
<button class="outlet-label">
<!-- <svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<path fill="none" d="M0 0h24v24H0z" />
<path
d="M21 13.242V20h1v2H2v-2h1v-6.758A4.496 4.496 0 0 1 1 9.5c0-.827.224-1.624.633-2.303L4.345 2.5a1 1 0 0 1 .866-.5H18.79a1 1 0 0 1 .866.5l2.702 4.682A4.496 4.496 0 0 1 21 13.242zm-2 .73a4.496 4.496 0 0 1-3.75-1.36A4.496 4.496 0 0 1 12 14.001a4.496 4.496 0 0 1-3.25-1.387A4.496 4.496 0 0 1 5 13.973V20h14v-6.027zM5.789 4L3.356 8.213a2.5 2.5 0 0 0 4.466 2.216c.335-.837 1.52-.837 1.856 0a2.5 2.5 0 0 0 4.644 0c.335-.837 1.52-.837 1.856 0a2.5 2.5 0 1 0 4.457-2.232L18.21 4H5.79z" />
</svg> -->
<span class="outlet-label__name">Outlet</span>
<span class="outlet-label__no"></span>
<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<path fill="none" d="M0 0h24v24H0z" />
<path d="M12 13.172l4.95-4.95 1.414 1.414L12 16 5.636 9.636 7.05 8.222z" />
</svg>
</button>
</section>
</main>
@ -271,328 +90,6 @@
<script src="https://unpkg.com/uhtml@3.0.1/es.js"></script>
<script src="assets/js/index.js"></script>
<script>
const bobFund = [
{
release: 1497970979000,
investors: [
{
investorName: 'Amit gupta',
floId: 'FRvaLurkpLNZiADR6aypDuBXjHAXymvoW3',
invested: 20000,
},
{
investorName: 'Vijay sarda',
floId: 'FEt4wGCf5aXQvNRju1QyzcXBc21nETSX1H',
invested: 20000,
},
{
investorName: 'Vijesh Raikar',
floId: 'FPDdVVeuZv6b8rk8PexTXPMzvKiZ5yRmy2',
invested: 20000,
},
{
investorName: 'Ajit Varshney',
floId: 'FCPVSrEB38GeLC75ELXhF853kCMWwVRHQB',
invested: 20000,
},
{
investorName: 'barun Kumar',
floId: 'FTS3FXu8kWHeFbd1V22w2D6P5BYYzEW8i',
invested: 10000,
},
{
investorName: 'Kunal Dikshit',
floId: 'FLg6BZejmHdmaKrk9tcwY3i3vHbmMnjBT5',
invested: 20000,
},
{
investorName: 'Sundeep Pandey',
floId: 'FPB1mtZmMX9dt7XAzBFx27sSyTSi7JNMrj',
invested: 20000,
},
{
investorName: 'Kusumakar Dwivedi',
floId: 'F87CMLVrGABco1zLyUiQCPq51QroHkABG9',
invested: 20000,
},
{
investorName: 'Surojeet Sengupta',
floId: 'FR6Qh9Szecx3FPNeoo9zWcmAEtuAMbkrFi',
invested: 20000,
},
{
investorName: 'Akash Srivastava',
floId: 'FDDtLLE61MKxheSyEHfAvwoD52nwGB98ep',
invested: 20000,
},
{
investorName: 'V Jayaram',
floId: 'FQf65GctPRu1zRHgFk5ynWTjwQeENymPKB',
invested: 20000,
},
{
investorName: 'Mayank Agrawal',
floId: 'FQf65GctPRu1zRHgFk5ynWTjwQeENymPKB',
invested: 20000,
},
{
investorName: 'Bhaskar Bhowmik',
floId: 'FUN9oiUUB2ueV59DytRyrKv8sBdVH7Jrck',
invested: 10000,
},
{
investorName: 'Rajesh Agrawal',
floId: 'FNrovxYR3ZPXcu3LjYiPgj7waDzYiJ9YsA',
invested: 20000,
},
{
investorName: 'Chetan Kulkarni',
floId: 'FTDmpz96L3iqc4CrhLW1csjmTVJXV3TT9L',
invested: 20000,
},
{
investorName: 'Amar More',
floId: 'FNojhvoi4aaGYK2LZ4ReCGSh5vk7tzZsqt',
invested: 20000,
},
{
investorName: 'Navin Chandiramani',
floId: 'F95teUSvUDsyjVju9r9RC4MEJaz9pYNnVH',
invested: 20000,
},
{
investorName: 'Gopal Krishnamurthy',
floId: 'F8uYrqM6RuXg7BvypYtZgkADG6YjkrYMZt',
invested: 20000,
},
{
investorName: 'Shivi',
floId: 'FBroPjNntF654rQD1niPmzxPEgPEu5L6nZ',
invested: 20000,
},
{
investorName: 'Shankar RS',
floId: 'FKENY1WnX4F3CD5NHcidP43sXknxDcfhTA',
invested: 20000,
},
{
investorName: 'Vikram Gupta',
floId: 'FKGePGRroHkfcy8yJ4MzNG844uaA2na8Qs',
invested: 20000,
},
{
investorName: 'Rohit Tripathy',
floId: 'FGoveDyLJ9MqCvEZXPCHqnkYQzDwLpD8Ue',
invested: 20000,
},
{
investorName: 'P. Unnikrishnan',
floId: 'FN7ih46Qtcv4darXvbBAXAdV1GLkir8uQt',
invested: 20000,
},
{
investorName: 'Arup Vithal',
floId: 'FEx6ZLhL5ehpK3jw62DtvG9Mn4L2dzD6mx',
invested: 20000,
},
{
investorName: 'Rahul Pundir',
floId: 'FN61MLKRmGiv46TPbXM71Gs91oAF2YDsyn',
invested: 20000,
},
{
investorName: 'Ankur Jain',
floId: 'F9fnJrRGHMXsPMHN2eg3oEammcsX7H4J9m',
invested: 20000,
},
{
investorName: 'Pankaj Shete',
floId: 'FDzWseokR2jNP8wC9o4qz8pZ22qwrfXWPQ',
invested: 20000,
},
{
investorName: 'Sameer Nagpal',
floId: 'FS4DLEj6V4FAdsju4CFGhPMqmVoPMAVRgF',
invested: 20000,
},
{
investorName: 'George Abraham',
floId: 'FBfujtTZfu2GPqPwmbxwevSKkLx7hcFj5R',
invested: 20000,
},
{
investorName: 'Samujjwal Ghosh',
floId: 'FBtDjYZXM6vNgfbGSGvg7xL8U1bfN5iNAF',
invested: 20000,
},
{
investorName: 'Aniruddha Karnataki',
floId: 'FK8nvFGfUYaGNpTbhG6MKBDBa888Bnn4on',
invested: 20000,
},
{
investorName: 'Mohammed Raffe Samathu',
floId: 'FMHVLffKLVvGRwedkTeSu9a2DBGupdiEtC',
invested: 20000,
},
{
investorName: 'Ruchir Gupta',
floId: 'FALfZbEtu16ATSEmmY7wwtRbMXUBakPMDy',
invested: 10000,
},
{
investorName: 'Santosh Nair',
floId: 'FFCHQExESgbzfKeDpm7oghEarHd8XETcwg',
invested: 20000,
},
{
investorName: 'Samit Arora',
floId: 'FFJzBT7Xio7XZHoBCvCKZBtimZJtgPcWih',
invested: 20000,
},
{
investorName: 'Sumeet Doshi',
floId: 'F7kJpgo3fhVahu387JT9hUKQZRUsxYhqcc',
invested: 20000,
},
{
investorName: 'Pradeep Rao',
floId: 'FCqr6r6dvKwK1NCqdQomB9kMhvSjWj4BUL',
invested: 10000,
},
{
investorName: 'Gaurav Sadhir',
floId: 'FKm7PvnG377tWCsWAJjHqqDoUKiMBdAfg9',
invested: 14000,
},
{
investorName: 'Sudhanshu Fadnis',
floId: 'FDvNAjNQ1uR1 JsADYNMwFjkiY2vKECnJRV',
invested: 20000,
},
{
investorName: 'Natesh Rao',
floId: 'FTB3Vi6Nj6hoFUwiQMadmkjq2M3FpMoe5T',
invested: 20000,
},
{
investorName: 'Kapil Chaturvedi',
floId: 'FMG2tashYXZeApqMtikYm4Uck8UxMdxpUZ',
invested: 6000,
},
{
investorName: 'Puneet Sondh',
floId: 'FTWGujfMdvGNqgMRveXvg93MCn4dUKEHzV',
invested: 20000,
},
]
},
{
release: 1622041379000,
invested: 13781.70,
href: `https://ranchimall.github.io/bobs-fund/#71f37a3b25d513a2b8d5fe155881ffd099c8e961791734e792bb882dd4dd3119`
},
]
function getCurrentRates() {
let fetchData = api => new Promise((resolve, reject) => {
fetch(api).then(response => {
if (response.ok)
response.json().then(data => resolve(data))
else
reject(response)
}).catch(error => reject(error))
})
return new Promise((resolve, reject) => {
fetchData(`https://bitpay.com/api/rates`).then(result => {
let BTC_USD, BTC_INR, USD_INR
for (let i of result)
i.code == "USD" ? BTC_USD = i.rate : i.code == "INR" ? BTC_INR = i.rate : null;
USD_INR = BTC_INR / BTC_USD;
resolve({
BTC_USD,
BTC_INR,
USD_INR
})
}).catch(error => reject(error))
})
}
let USD_current, BTC_current
getCurrentRates().then(async (rates) => {
USD_current = rates.USD_INR;
BTC_current = rates.BTC_USD;
renderAllFundInvestors()
}).catch(error => console.error(error))
function calcNetValue(BTC_base, USD_base, amount, fee) {
let gain, interest, net;
gain = (BTC_current - BTC_base) / BTC_base;
interest = gain * (1 - fee)
net = amount / USD_base;
net += net * interest;
percentGain = (((net * USD_current) - amount) / amount) * 100
//console.info(gain, interest, net)
return [net * USD_current, percentGain.toFixed(0)];
}
function renderAllFundInvestors() {
const frag = document.createDocumentFragment()
const timelineItemsFrag = document.createDocumentFragment()
getRef('bobs_fund_timeline').innerHTML = ''
bobFund.forEach(fund => {
const { release, invested, investors, href } = fund
console.log(release, invested, investors, href)
const timelineItem = create('li', { className: 'timeline-item' })
const tilelineItemHeader = create('header', {
className: 'timeline-item__header',
text: getFormatedTime(release, true)
})
if (fund.hasOwnProperty('investors')) {
investors.forEach(investor => {
let [currentValue, gain] = calcNetValue(2676.5, 64.46, investor.invested, 0)
currentValue = parseFloat(currentValue.toFixed(2))
timeElapsed = (new Date().getFullYear() - 2017)
frag.append(render.bobFundRow({ ...investor, currentValue, gain, timeElapsed }))
})
const fundContainer = create('div', {
className: 'grid series-container series-container--bobs-fund'
})
const heading = create('h4', {
className: 'margin-bottom-1r margin-top-1-5',
text: 'Fund investors'
})
fundContainer.append(frag)
timelineItem.append(heading, fundContainer)
}
else {
const fundCard = create('div', {
className: 'grid card'
})
let [currentValue, gain] = calcNetValue(37488, 72.56, invested, 0)
currentValue = parseFloat(currentValue.toFixed(2))
fundCard.innerHTML = `
<div class="flex space-between">
<div class="grid">
<h5 class="label color-0-8 weight-500">Total fund investment</h5>
<h3 class="value original-value">${invested.toLocaleString('en-US', { style: 'currency', currency: 'USD' })}</h3>
</div>
<div class="grid justify-right text-align-right">
<h4 class="label color-0-8 weight-500">Current value</h4>
<h3 class="value current-value" style="color: var(--green)">${currentValue.toLocaleString('en-US', { style: 'currency', currency: 'USD' })}</h3>
</div>
</div>
<a class="button button--filled justify-right" href='${href}' target="_blank">See investors</a>
`
timelineItem.append(fundCard)
}
timelineItem.prepend(tilelineItemHeader)
timelineItemsFrag.prepend(timelineItem)
})
getRef('bobs_fund_timeline').append(timelineItemsFrag)
}
</script>
</body>

120
verify.html Normal file
View File

@ -0,0 +1,120 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Verify certificate</title>
<link rel="shortcut icon" href="assets/RM logo.png" type="image/png">
<link rel="stylesheet" href="assets/css/main.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@400..900&display=swap" rel="stylesheet">
<style>
sm-input {
--border-radius: 0.5rem 0 0 0.5rem;
flex: 1;
}
button[type="submit"] {
font-size: 1rem;
padding: 0.8rem 1.2rem;
border-radius: 0 .5rem 0.5rem 0;
}
sm-form {
--gap: 0;
width: min(26rem, 100%);
}
</style>
</head>
<body>
<sm-notifications id="notification_drawer"></sm-notifications>
<section id="elevator_popup" class="grid hide-completely">
<header class="elevator__header">
<button class="close-button justify-self-start" onclick="hideSiteMap()">
<svg class="icon icon-only close-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24"
height="24">
<path fill="none" d="M0 0h24v24H0z" />
<path
d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z" />
</svg>
</button>
</header>
<ul id="floor_list" class="grid"></ul>
</section>
<header id="main_header" class="full-bleed">
<button id="elevator_button" class="button" onclick="showSiteMap()">
<svg class="icon" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 3L16.3301 10.5H7.66987L12 3Z" />
<path d="M12 21L7.66987 13.5L16.3301 13.5L12 21Z" />
</svg>
<span class="button__label">
Elevator
</span>
</button>
<a href="index.html" class="main-logo flex align-center page-link justify-self-center" data-target="home_page">
<svg id="main_header__logo" class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path
d="M20.46,21.32C20,19.78,18.6,18.59,15.3,17a12.67,12.67,0,0,1-2.64-1.56,4.27,4.27,0,0,1-.79-1,2.6,2.6,0,0,1,0-1.41c.24-.68.49-1,2.43-2.85a7.18,7.18,0,0,0,2.09-2.92,4.25,4.25,0,0,0,0-1.77,6.52,6.52,0,0,0-2.85-3.11c-.56-.36-.81-.4-.81-.15a2.33,2.33,0,0,1-.18.45L12.4,3l-.53-.36c-.28-.21-.64-.41-.77-.49s-.46-.11-.46,0a6.21,6.21,0,0,1-.37.83s-.08,0-.17-.08c-1.15-.83-1.64-1-1.64-.73A7.33,7.33,0,0,1,7.7,3.65C6.48,5.68,5.24,6.7,4,6.7c-.56,0-.54,0-.37.64s.2.58.68.43a3.37,3.37,0,0,0,1.09-.54.86.86,0,0,1,.3-.17,1.34,1.34,0,0,1,.13.39.79.79,0,0,0,.17.4A3.5,3.5,0,0,0,7.37,7.3L7.8,7l.09.34c.12.45.19.51.62.39a4.25,4.25,0,0,0,2.17-1.54l.38-.45,0,.39A5.92,5.92,0,0,1,8.89,9.54L7.67,10.71c-2,1.93-1.89,3.51.37,5a27.41,27.41,0,0,0,2.89,1.51c.17.07.62.32,1,.54C14,19,15,20.23,15,21.48a2,2,0,0,0,0,.49h0c0,.05,0,.05.56-.1a1.89,1.89,0,0,0,.53-.21,2.41,2.41,0,0,0-.34-1.15,7.05,7.05,0,0,0-1.68-1.77,21.91,21.91,0,0,0-3.2-1.83A9.53,9.53,0,0,1,8.16,15.2a2.18,2.18,0,0,1-.74-1.55C7.42,12.79,7.86,12,9,11c1.77-1.64,2.45-2.45,2.92-3.55a2.28,2.28,0,0,0,.26-1.26A2,2,0,0,0,12,5.06l-.2-.45L12,4.3l.28-.49.09-.18L12.6,4a3.69,3.69,0,0,1,.61,1.76A3.47,3.47,0,0,1,12.94,7l-.09.25s-.21.37-.41.69A17.78,17.78,0,0,1,9.91,10.6c-1.07,1-1.43,1.62-1.47,2.47a2.05,2.05,0,0,0,.7,1.73,10.47,10.47,0,0,0,3.28,2.08c2.28,1.13,3.26,1.81,4,2.73a2.94,2.94,0,0,1,.74,1.75,1.26,1.26,0,0,0,.09.57.48.48,0,0,0,.26,0l.51-.13.29-.08,0-.28c-.13-1-1-2-2.47-3a25.52,25.52,0,0,0-3.26-1.77,8.59,8.59,0,0,1-2.23-1.43,2.09,2.09,0,0,1-.5-2.62c.26-.53.5-.83,2.35-2.6,1.51-1.45,2.15-2.58,2.15-3.79A3.67,3.67,0,0,0,13,3.48a3,3,0,0,1-.4-.42A1.85,1.85,0,0,1,13,2.33a6.74,6.74,0,0,1,1.83,1.73,2.62,2.62,0,0,1,.47,1.68,3,3,0,0,1-.55,1.84c-.45.78-.79,1.14-2.67,2.93a5.56,5.56,0,0,0-1.3,1.64,1.77,1.77,0,0,0-.21,1,1.76,1.76,0,0,0,.19.92,6.28,6.28,0,0,0,2.9,2.34,21.6,21.6,0,0,1,3.66,2c1.35,1,2,2,2,3a1.06,1.06,0,0,0,.05.47,2.83,2.83,0,0,0,1-.24C20.56,21.68,20.56,21.66,20.46,21.32ZM7.29,6.4h0a2.23,2.23,0,0,1-.9.28L6,6.72l.43-.53a15.22,15.22,0,0,0,1.89-3,3.52,3.52,0,0,1,.38-.67c.07-.08.49.2,1,.64l.39.35L9.66,4A6.7,6.7,0,0,1,7.29,6.4Zm3.58-1.11A5.8,5.8,0,0,1,9.25,6.51h0a3.3,3.3,0,0,1-.74.17l-.35,0,.39-.49a15.64,15.64,0,0,0,1.32-2,4.63,4.63,0,0,1,.28-.49c.06-.08.33.26.57.77l.28.57Zm1-1.4a1.63,1.63,0,0,1-.28.4A6.63,6.63,0,0,1,11,3.72l-.53-.56.12-.29c.2-.49.24-.51.64-.19a5.57,5.57,0,0,1,.85.78A2.78,2.78,0,0,1,11.87,3.89Z" />
</svg>
<h4 class="h4 header__company-name">RanchiMall</h4>
</a>
<theme-toggle></theme-toggle>
</header>
<div id="outlet_switcher" class="grid gap-1-5 hide-completely">
<span id="outlet_switcher__floor_num" class="weight-500 color-0-8"></span>
<section id="outlet_switcher__outlet_container" class="outlet_switcher__floor"></section>
</div>
<main class="page">
<section class="outlet-hero-section margin-bottom-3r">
<div class="grid">
<h2 class="h2 weight-900 margin-bottom-1r">Verify certificate</h2>
<p>Enter transaction ID of issued certificate to check genuinity.</p>
<sm-form class="flex margin-top-1-5">
<sm-input id="tx_id_input" type="search" placeholder="Transaction ID"></sm-input>
<button class="button button--primary" type="submit" onclick="checkId(event)">Check</button>
</sm-form>
</div>
</section>
</main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.3/gsap.min.js"></script>
<script src="assets/js/components.js"></script>
<script src="https://unpkg.com/uhtml@3.0.1/es.js"></script>
<script src="assets/js/index.js"></script>
<script>
function checkId(e) {
e.preventDefault()
const toVerify = getRef('tx_id_input').value.trim()
if (toVerify === '')
return notify('Please enter a transaction ID', 'error')
fetch(`https://flosight.duckdns.org/api/tx/${toVerify}`).then(async res => {
if (res.status === 404) return notify('Invalid transaction ID', 'error')
const { floData } = await res.json()
const certType = floData.split(' ').slice(0, 3).join(' ');
let certificateVerification
switch (certType) {
case "CERTIFICATE OF INTERNSHIP":
certificateVerification = 'internCertificate';
break;
case "CERTIFICATE OF EMPLOYMENT":
certificateVerification = 'employeeCertificate';
break;
case "CERTIFICATE OF VOLUNTEERSHIP":
certificateVerification = 'volunteerCertificate';
break;
case "CERTIFICATE OF PARTICIPATION":
certificateVerification = 'participationCertificate';
break;
}
window.open(`https://www.ranchimall.net/verify/?${certificateVerification}=${toVerify}`, '_blank').focus();
}).catch(err => {
console.error(err)
})
}
</script>
</body>
</html>