diff --git a/package-lock.json b/package-lock.json index 6f32bf2..0b8ccf6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@emotion/styled": "^11.11.0", "@fontsource/poppins": "^5.0.12", "@gsap/react": "^2.1.0", + "@reduxjs/toolkit": "^2.2.3", "axios": "^1.6.8", "framer-motion": "^11.0.15", "react": "^18.2.0", @@ -22,6 +23,7 @@ "react-google-recaptcha": "^3.1.0", "react-hook-form": "^7.51.2", "react-intersection-observer": "^9.8.1", + "react-redux": "^9.1.1", "react-router-dom": "^6.22.3", "swiper": "^11.1.0" }, @@ -2006,6 +2008,29 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@reduxjs/toolkit": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.2.3.tgz", + "integrity": "sha512-76dll9EnJXg4EVcI5YNxZA/9hSAmZsFqzMmNRHvIlzw2WS/twfcVX3ysYrWGJMClwEmChQFC4yRq74tn6fdzRA==", + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.0.1" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, "node_modules/@remix-run/router": { "version": "1.15.3", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", @@ -2452,6 +2477,11 @@ "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", "devOptional": true }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -3934,6 +3964,15 @@ "node": ">= 4" } }, + "node_modules/immer": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.4.tgz", + "integrity": "sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -5001,6 +5040,32 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/react-redux": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.1.tgz", + "integrity": "sha512-5ynfGDzxxsoV73+4czQM56qF43vsmgJsO22rmAvU5tZT2z5Xow/A2uhhxwXuGTxgdReF3zcp7A80gma2onRs1A==", + "dependencies": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "react-native": ">=0.69", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react-native": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, "node_modules/react-remove-scroll": { "version": "2.5.9", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.9.tgz", @@ -5098,6 +5163,19 @@ } } }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "peerDependencies": { + "redux": "^5.0.0" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", @@ -5142,6 +5220,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/reselect": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.0.tgz", + "integrity": "sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg==" + }, "node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -5723,6 +5806,14 @@ } } }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/vite": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", diff --git a/package.json b/package.json index 3a57c5e..0a18478 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@emotion/styled": "^11.11.0", "@fontsource/poppins": "^5.0.12", "@gsap/react": "^2.1.0", + "@reduxjs/toolkit": "^2.2.3", "axios": "^1.6.8", "framer-motion": "^11.0.15", "react": "^18.2.0", @@ -24,6 +25,7 @@ "react-google-recaptcha": "^3.1.0", "react-hook-form": "^7.51.2", "react-intersection-observer": "^9.8.1", + "react-redux": "^9.1.1", "react-router-dom": "^6.22.3", "swiper": "^11.1.0" }, diff --git a/src/Redux/slice/communitySlice.js b/src/Redux/slice/communitySlice.js new file mode 100644 index 0000000..3c85420 --- /dev/null +++ b/src/Redux/slice/communitySlice.js @@ -0,0 +1,14 @@ +// apiSlice.js +import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; + +export const api = createApi({ + reducerPath: 'communities', + baseQuery: fetchBaseQuery({ baseUrl: 'https://rubix.betadelivery.com/api/admin/' }), + endpoints: (builder) => ({ + getCommunities: builder.query({ + query: () => 'community', + }), + }), +}); + +export const { useGetCommunitiesQuery } = api; diff --git a/src/Redux/store/store.js b/src/Redux/store/store.js new file mode 100644 index 0000000..3a9dfa1 --- /dev/null +++ b/src/Redux/store/store.js @@ -0,0 +1,12 @@ +import { configureStore } from '@reduxjs/toolkit'; +import { api } from '../slice/communitySlice'; + +const store = configureStore({ + reducer: { + [api.reducerPath]: api.reducer, + }, + middleware: (getDefaultMiddleware) => + getDefaultMiddleware().concat(api.middleware), +}); + +export default store; diff --git a/src/assets/images/calendar.png b/src/assets/images/calendar.png new file mode 100644 index 0000000..ba9ade3 Binary files /dev/null and b/src/assets/images/calendar.png differ diff --git a/src/assets/images/eventInternal.png b/src/assets/images/eventInternal.png new file mode 100644 index 0000000..a233360 Binary files /dev/null and b/src/assets/images/eventInternal.png differ diff --git a/src/components/Community/CommunityCard.jsx b/src/components/Community/CommunityCard.jsx index 08f1c6e..5d40101 100644 --- a/src/components/Community/CommunityCard.jsx +++ b/src/components/Community/CommunityCard.jsx @@ -25,10 +25,12 @@ import imgnine from "../../assets/images/Component123.png"; import imgten from "../../assets/images/Component128.png"; import imgeleven from "../../assets/images/Component127.png"; import imgtweleve from "../../assets/images/kiran.jpg"; +import { useEffect } from "react"; +import axios from "axios"; +import { useGetCommunitiesQuery } from "../../Redux/slice/communitySlice"; const individuals = [ { - location: "india", name: "KC Reddy", jobTitle: "Founder/CTO", description: @@ -37,7 +39,6 @@ const individuals = [ link: `https://www.linkedin.com/in/kc-reddy-767a3463/`, }, { - location: "india", name: "Ravi Srinivasa Murty", jobTitle: "Chief Strategy Officer", description: @@ -46,7 +47,6 @@ const individuals = [ link: `https://www.linkedin.com/in/ravi-srinivasa-murty-7a46041/`, }, { - location: "india", name: "Hari Krishnan", jobTitle: "Head of Technology", description: @@ -55,7 +55,6 @@ const individuals = [ link: `https://www.linkedin.com/in/hari-krishnan-1691b6120/`, }, { - location: "india", name: "Eser Torun, CFA", jobTitle: "Chief Growth Officer", description: @@ -64,7 +63,6 @@ const individuals = [ link: `https://www.linkedin.com/in/eser-torun-cfa?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=ios_app`, }, { - location: "india", name: "Gokul P S", jobTitle: "Core Blockchain Developer", description: @@ -73,7 +71,6 @@ const individuals = [ link: `https://www.linkedin.com/in/gokul-p-s-3a8445130/`, }, { - location: "india", name: "Allen Iype P Cherian", jobTitle: "Blockchain Engineer", description: @@ -82,7 +79,6 @@ const individuals = [ link: `https://www.linkedin.com/in/allen-iype-p-cherian/`, }, { - location: "india", name: "Nidhin M.", jobTitle: "Lead Engineer", description: @@ -91,7 +87,6 @@ const individuals = [ link: `https://www.linkedin.com/in/nidhinmahesh/`, }, { - location: "india", name: "Arnab Ghose", jobTitle: "Senior Blockchain Engineer", description: @@ -100,7 +95,6 @@ const individuals = [ link: `https://www.linkedin.com/in/arnabghose997?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=ios_app`, }, { - location: "india", name: "Ashita Gupta", jobTitle: "Blockchain Developer", description: @@ -109,7 +103,6 @@ const individuals = [ link: `https://www.linkedin.com/in/ashita-gupta-5a0827167/`, }, { - location: "india", name: "Vaishnav C H", jobTitle: "Blockchain Developer", description: @@ -118,7 +111,6 @@ const individuals = [ link: `https://www.linkedin.com/in/vaishnav-c-h-134053221/`, }, { - location: "india", name: "Maneesha Panda", jobTitle: "Blockchain Engineer", description: @@ -127,7 +119,6 @@ const individuals = [ link: `https://www.linkedin.com/in/maneesha-panda/`, }, { - location: "india", name: "Kiran H", jobTitle: "Lead Software Engineer", description: @@ -138,6 +129,24 @@ const individuals = [ ]; const CommunityCard = () => { + // const { data, error, isLoading } = useGetCommunitiesQuery(); + + useEffect(() => { + // async function fetchData() { + // try { + // const response = await axios.get( + // "https://rubix.betadelivery.com/api/admin/community" + // ); + // console.log(response.data.data.rows); + // } catch (error) { + // // Handle errors + // console.error("Error fetching data:", error.message); + // } + // } + // // Call the fetchData function to initiate the request + // fetchData(); + }, []); + return ( <> diff --git a/src/components/EventsInternal/EventDates/EventDates.jsx b/src/components/EventsInternal/EventDates/EventDates.jsx new file mode 100644 index 0000000..b87e4d3 --- /dev/null +++ b/src/components/EventsInternal/EventDates/EventDates.jsx @@ -0,0 +1,74 @@ +import { Box, Image, Text } from "@chakra-ui/react"; +import calendar from "../../../assets/images/calendar.png"; +import pin from "../../../assets/images/map-pin.png"; + +const EventDates = () => { + return ( + + + Details + + Friday, May 18 - 8.00 PM + + + Friday, May 18 - 8.00 PM + + + Friday, May 18 - 8.00 PM + + + + + Location + + Anywhere 123, anycity + + + + + Organizer + + Rubix Team + + + +91 4578451245 + + + rubix@gmail.com + + + + ); +}; + +export default EventDates; diff --git a/src/components/EventsInternal/EventsInternal.jsx b/src/components/EventsInternal/EventsInternal.jsx index c567a60..046377f 100644 --- a/src/components/EventsInternal/EventsInternal.jsx +++ b/src/components/EventsInternal/EventsInternal.jsx @@ -1,5 +1,6 @@ +/* eslint-disable no-unused-vars */ import React, { useEffect } from "react"; -import { Box, Text, Image } from "@chakra-ui/react"; +import { Box, Text, Image, Container } from "@chakra-ui/react"; import { Avatar, AvatarBadge, AvatarGroup } from "@chakra-ui/react"; import banner from "../../assets/images/articleInternalbanner.png"; import Chip from "../Chip/Chip"; @@ -12,6 +13,8 @@ import github from "../../assets/images/github.png"; import tele from "../../assets/images/tele.png"; import reddit from "../../assets/images/reddit.png"; import fb from "../../assets/images/fb.png"; +import pic from "../../assets/images/eventInternal.png"; +import EventDates from "./EventDates/EventDates"; const EventsInternal = () => { useEffect(() => { @@ -19,104 +22,140 @@ const EventsInternal = () => { }, []); return ( <> - + - - Enterprise blockchains on a Public Chain! - - - {/* ========[ Banner ]======= */} - - - - - + + Financial Times Crypto & Digital Assets Summit Panel + + + Friday, May 18 - 8.00 PM + + + + {/* ========[ Banner ]======= */} + + + + + + {/* Content */} + + + BlockSpace is the number of transactions which the blockchain + will order before appending to the chain of previous + transactions. For example, if max block space is 200KB and + average transactions take only 1Kb, then the chain may have a + room for ~190 transactions in one block. BlockSpace is a + measure of how busy is the blockchain. Low BlockSpace may mean + transactions remain unattended in the Mempool for very long. + Transactions that compete with each to pay higher fees are + likely to be validated faster. The BlockSpace limit is + intended to protect the decentralized nature of monolithic + blockchains from centralization via large blocks. It protects + small miners from being outcompeted by large blocks by + requiring higher minimum fees with larger block size, which + regulates the number of transactions that can be included in + each block. It does not mean that there will be this many + transactions in any given period, but rather gives an idea of + how many transactions the network can process in a certain + period when under stress. + + + + + + + {/* Socials */} + { width: "100%", marginBottom: "20px", marginTop: "20px", + padding: "0 1rem", }, }} > { { }, }} > - - - - + + + + - - - - - - - - {/* - - */} - - Web3 transformation is beginning to accelerate at an exponential - rate. Enterprises & app developers alike are keenly looking for - ways to migrate to Web3 protocols. Web3 is highly disruptive, - yet brings immense business growth opportunities for - enterprises. Enterprises & Web3 apps can also reduce operating & - IT costs significantly by adopting decentralized protocols. - While Web3 is highly relevant to DAOs (Decentralized Autonomous - Organizations), Apps & enterprises alike, the focus in this blog - is on how enterprises can build secure networks over the Rubix - public blockchain instead of building expensive & clunky private - / permissioned chains. Blockchain & Web3 offer significant - benefits for enterprises. Enterprises across sectors that adopt - Web3 will benefit immensely, while those who don’t might face - disruption from incumbents or new entrants. Benefits of Web3 - adoption include (a) better settlement internally or - intra-industry (b) supply chain improvements ( c ) newer - markets/growth opportunities (d) lower IT infrastructure costs & - (e) Better ESG (environmental, social & governance) compliance. - Enterprise blockchain adoption though has faced significant - challenges so far. The challenges include (a) concerns about - data security/privacy (b) storing data at all public blockchain - nodes & ( c ) high transaction/infrastructure costs. Enterprises - so far preferred setting up private / permissioned chains for - both internal & intra-industry applications. Most of these - applications fail to scale for the reasons explained in this - para. The real benefits of blockchain accrue for enterprises on - a public chain. The benefits of a public chain are several, but - the most notable ones are (a) malleability — enterprises can - expand/contract chains based on projects without needing to - build custom blockchains for each use case & (b) open-source- - having a community of developers/trouble-shooters gets better - apps & reduces costs. While the benefits of a public chain are - immense, faster adoption requires solving the current - constraints. Public chains can offer a better way for - enterprises to adopt Web3, But is there a public chain that can - meet the needs of enterprises? In other words, can enterprises - launch their chains on a public chain? After a long search, I - came across a scalable open-sourced project called Rubix Chain - which has been maintained for over a year providing huge support - to anyone who wants a blockchain solution. I was very keen then - onwards to see what’s going on and how their platform has been - improving over time. The network was able to meet my - expectations & ticked all the boxes including (a) having an - option to choose validators such as custom validators or - randomly chosen validators & (b) better infrastructure control - which no other project has offered to date. Rubix Chain is a - highly scalable blockchain protocol, using which enterprises or - consortia can launch multiple proofchains with the same - infrastructure. Rubix has its own platform, git repos, wallet, - set-up system, support, etc. An open-source project having this - level of support even for enterprise users too should be - appreciated. Anyone who wants to set up their controlled network - can use Rubix Chain — the setup process is very easy & there is - good documentation. The entire network can be up & running in - hours, not days. - - {/* - - */} - - Rubix ProofChain is the chain of all transactions that are bound - by the user token called utility token (RBT). All ProofChains - with tokens committed in the genesis node were originated by the - genesis node itself and are stored and committed using the - protocol and its ownership is globally verifiable. All others - that are not pre-committed to the genesis node are mined by the - validators and the corresponding ProofChain of that token will - be starting with the validators node that has mined the token. - Let’s take a look at what’s happening inside the Rubix Chain and - understand why it’s the best enterprise solution. One major - issue enterprise users face is the data discrepancy between - different nodes or sub-networks. While in other public chains, - third parties or oracles are needed to sync subnets, sidechains - or parachains, in Rubix, different proofchains automatically - sync to represent one global state without the explicit need for - 3rd party nodes or oracles. - - {/* - - */} - - Another major advantage of the Rubix Chain is that even though - it is a public chain, the level of decentralization that the - network provides is flexible and customisable. Ideally, - blockchain should be decentralized but based on the use case the - Rubix Chain is adaptable in such a way that it can choose how - decentralized the network should be, the level of security, - which validator/quorum should be validating the transaction, - etc. There could be some users who just want to have limited - control over the data, while others want entire control whereas - some others require entire decentralization. All these can be - configured by just updating the quorum list with who validates - the transaction. This choice of quorum brings forth the next - major advantage, data control over the network, as this is one - such major situation most enterprise users need is the option to - validate the transaction within its nodes itself; this could be - due to some internal policy or limitation in data sharing; Rubix - provides the perfect solution for enterprises in adopting based - on their needs. Let us discuss how Rubix can help enterprises - meet their various requirements easily. For each Rubix - transaction, the initiator can define the type of transaction it - requires, based on the type the quorum will be picked. In Type 1 - transaction quorums are picked from a broad set of global - validators, randomly, whereas Type 2 transactions will help - enterprises or consortia use a pre-determined cluster of - validators. Type 2 helps enterprises/consortia have better - control over their data. Type 2 does not mean losing the - benefits of a decentralized network (attributes such as - immutability & Sybil resistance) as all enterprise chains will - be part of a shared global state with a single public swarm key! - Transactions done using a Type 2 transaction are as secure, - immutable & globally verifiable as a Type 1 transaction, due to - the revolutionary Proof of Pledge consensus protocol (more on - this in the whitepaper found in the git repo. Malleability is - perhaps the biggest benefit of building enterprise chains on top - of the Rubix chain. For example, a consumer goods company can - download the free Rubix software on all its internal computing - nodes to run internal applications. Some of the internal nodes - can easily be switched or be added to a consortium network - without any time delay or additional costs. This makes - enterprises highly adaptable to Web3 without necessarily - committing at one go or doing costly PoCs. Since Rubix Chain is - a resource-subdued, lightweight blockchain and easier to setup - compared to other heavier public blockchains, it becomes cheaper - to run as additional resources like parallel computing machines - or ultra-spec systems are not necessarily required. Any normal - machine that is capable of running normal applications and tools - will be able to run Rubix Network on their machine. Another key - requirement for enterprises is handling identity & KYC. Rubix is - the only protocol with Decentralized Identity (DID) built from - scratch. It is easier to build Identity & Access Management - (IAM) & KYC applications using Rubix. From cost-effective to - flexibility and security to scalability Rubix Chain is a project - anyone can bet upon, unlike other blockchains that claims to be - decentralized but are centralized by infrastructure Rubix - network maintains the integrity of being decentralized. Setup - instructions are available with all files here, repo also can be - cloned from here. There is already significant interest from - enterprises in building various applications including document - management, finance, HR, ESG provenance, supply chain management - & media. Rubix could be the protocol that helps enterprises - quickly adapt to the inevitable rise of Web3. - - - diff --git a/src/main.jsx b/src/main.jsx index cb01b5a..424ecea 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -4,13 +4,17 @@ import App from "./App.jsx"; import "./index.css"; import { ChakraProvider } from "@chakra-ui/react"; import theme from "./components/Theme/Theme.jsx"; +import store from "./Redux/store/store.js"; // import Fonts from "./components/Theme/Fonts.jsx"; +import { Provider } from "react-redux"; ReactDOM.createRoot(document.getElementById("root")).render( - - - {/* */} - - - + + + + {/* */} + + + + );