2024-09-27 16:30:04 -05:00
import React from 'react' ;
2024-09-13 16:17:19 -05:00
import Image from 'next/image' ;
import NostrIcon from '../../public/images/nostr.png' ;
2024-09-27 16:30:04 -05:00
import { Card } from 'primereact/card' ;
import { Message } from 'primereact/message' ;
import { useToast } from "@/hooks/useToast" ;
2024-09-15 15:53:27 -05:00
import useWindowWidth from "@/hooks/useWindowWidth" ;
2024-09-27 16:30:04 -05:00
import GenericButton from '@/components/buttons/GenericButton' ;
2024-10-10 17:54:34 -05:00
import InteractivePromotionalCarousel from '@/components/content/carousels/InteractivePromotionalCarousel' ;
2024-09-13 11:39:44 -05:00
const AboutPage = ( ) => {
2024-09-27 16:30:04 -05:00
const { showToast } = useToast ( ) ;
2024-09-15 15:53:27 -05:00
const windowWidth = useWindowWidth ( ) ;
2024-09-13 16:17:19 -05:00
2024-10-10 17:54:34 -05:00
const isTabView = windowWidth <= 1360 ;
2024-10-23 14:48:11 -05:00
const isMobile = windowWidth < 768 ;
2024-10-10 17:54:34 -05:00
2024-09-13 16:17:19 -05:00
const copyToClipboard = async ( text ) => {
try {
2024-09-27 16:30:04 -05:00
await navigator . clipboard . writeText ( text ) ;
showToast ( "success" , "Copied" , "Copied Lightning Address to clipboard" ) ;
if ( window && window ? . webln && window ? . webln ? . lnurl ) {
await window . webln . enable ( ) ;
const result = await window . webln . lnurl ( "austin@bitcoinpleb.dev" ) ;
if ( result && result ? . preimage ) {
showToast ( "success" , "Payment Sent" , "Thank you for your donation!" ) ;
}
2024-09-13 16:17:19 -05:00
}
} catch ( err ) {
2024-09-27 16:30:04 -05:00
console . error ( 'Failed to copy:' , err ) ;
2024-09-13 16:17:19 -05:00
}
2024-09-27 16:30:04 -05:00
} ;
2024-09-13 16:17:19 -05:00
2024-09-13 11:39:44 -05:00
return (
2024-10-23 14:48:11 -05:00
< div className = { ` ${ isTabView ? 'w-full' : 'w-[83vw]' } ${ isMobile ? 'p-0' : 'p-4' } mx-auto ` } >
2024-10-10 17:54:34 -05:00
< InteractivePromotionalCarousel / >
2024-10-23 14:48:11 -05:00
< Card title = "Key Features" className = { ` mb-4 ${ isMobile ? 'm-2' : null } ` } >
2024-11-14 15:14:28 -06:00
< div className = "flex flex-col gap-4 max-w-[80%] max-mob:max-w-full" >
2024-09-27 16:30:04 -05:00
< div className = "flex flex-col items-start justify-center" >
2024-10-10 18:32:21 -05:00
< div className = 'flex items-start' >
2024-09-27 16:30:04 -05:00
< i className = "pi pi-cloud text-2xl text-primary mr-2 text-blue-400" > < / i >
2024-10-10 18:32:21 -05:00
< div >
< h3 className = 'text-lg font-semibold' > Content Distribution : < / h 3 >
2024-11-14 15:14:28 -06:00
< p className = 'text-lg' > All content is published to Nostr and actively pulled from Nostr relays < / p >
2024-10-10 18:32:21 -05:00
< ul className = "list-disc list-inside ml-2 mt-2 space-y-2" >
2024-11-14 15:14:28 -06:00
< li > < span className = "text-lg font-semibold" > Nostr : < / s p a n > C o n t e n t i s s t o r e d o n a n d r e a d f r o m N o s t r r e l a y s h o w e v e r a d a t a b a s e i s u s e d f o r s t o r i n g m e t a d a t a a n d f i l t e r i n g c o n t e n t . < / l i >
< li > < span className = "text-lg font-semibold" > Zaps : < /span> Zaps are currently initated through Zapper - <a href="https:/ / zapper . nostrapps . org " target=" _blank " rel=" noopener noreferrer " className=" text - blue - 400 " > https : //zapper.nostrapps.org</a></li>
< li > < span className = "text-lg font-semibold" > Comments : < /span> For comments we are leveraging ZapThreads - <a href="https:/ / zapthreads . dev / " target=" _blank " rel=" noopener noreferrer " className=" text - blue - 400 " > https : //zapthreads.com</a></li>
2024-10-10 18:32:21 -05:00
< / u l >
< / d i v >
2024-09-27 16:30:04 -05:00
< / d i v >
< / d i v >
< div className = "flex items-start" >
< i className = "pi pi-file-edit text-2xl text-primary mr-2 text-green-400 mt-1" > < / i >
< div >
< h3 className = "text-lg font-semibold" > Content Types : < / h 3 >
2024-11-14 15:14:28 -06:00
< p className = 'text-lg' > High signal , Bitcoin , Lightning , and Nostr educational content . < / p >
2024-09-27 16:30:04 -05:00
< ul className = "list-disc list-inside ml-2 mt-2 space-y-2" >
< li > < span className = "text-lg font-semibold" > Documents : < / s p a n > M a r k d o w n d o c u m e n t s p o s t e d a s N I P - 2 3 l o n g - f o r m e v e n t s o n N o s t r . < / l i >
2024-11-14 15:14:28 -06:00
< li > < span className = "text-lg font-semibold" > Videos : < / s p a n > F o r m a t t e d m a r k d o w n d o c u m e n t s w i t h r i c h m e d i a s u p p o r t , i n c l u d i n g e m b e d d e d v i d e o s , a l s o s a v e d a s N I P - 2 3 e v e n t s . < / l i >
2024-09-27 17:00:20 -05:00
< li > < span className = "text-lg font-semibold" > Courses : < / s p a n > N o s t r l i s t s ( N I P - 5 1 ) t h a t c o m b i n e s m u l t i p l e d o c u m e n t s a n d v i d e o s i n t o a s t r u c t u r e d l e a r n i n g p a t h . < / l i >
2024-09-27 16:30:04 -05:00
< / u l >
< / d i v >
< / d i v >
2024-10-10 18:32:21 -05:00
< div className = "flex items-start" >
< i className = "pi pi-bolt text-2xl text-primary mr-2 mt-1 text-yellow-400" > < / i >
< div >
< h3 className = "text-lg font-semibold" > Content Monetization : < / h 3 >
2024-10-10 18:36:56 -05:00
< p className = 'text-lg' > All content is zappable and some content is PAID requiring a Lightning purchase or Subscription through the platform for permanent access . < / p >
2024-10-10 18:32:21 -05:00
< ul className = "list-disc list-inside ml-2 mt-2 space-y-2" >
< li > < span className = "text-lg font-semibold" > Free : < /span> Free content is available to all users. <br / > < span className = "pl-4" > * can be viewed on PlebDevs or any nostr client that supports NIP - 23 and NIP - 51. < / s p a n > < / l i >
< li > < span className = "text-lg font-semibold" > Paid : < /span> Paid content is available for purchase with Lightning. <br / > < span className = "pl-4" > * published to nostr but encrypted with plebdevs private key , currently only viewable on PlebDevs platform . < / s p a n > < / l i >
< / u l >
< / d i v >
< / d i v >
< div className = 'flex items-start' >
< i className = "pi pi-star text-2xl text-primary mr-2 text-orange-400 mt-1" > < / i >
< div >
< h3 className = "text-lg font-semibold" > Subscriptions : < / h 3 >
< p className = 'text-lg' > The PlebDevs subscription unlocks all paid content , gives access to our 1 : 1 calendar for tutoring / help , and grants you a plebdevs . com Lightning Address and Nostr NIP - 05 identity . < / p >
< ul className = "list-disc list-inside ml-2 mt-2 space-y-2" >
2025-02-04 21:53:19 -06:00
< li > < span className = "text-lg font-semibold" > Pay - as - you - go : < /span> 50,000 sats - A one-time payment that gives you access to all of the premium features for one month <br / > < span className = "pl-4" > * you will need to manually renew your subscription every month . < / s p a n > < / l i >
< li > < span className = "text-lg font-semibold" > Recurring : < /span> 50,000 sats - A subscription option allows you to submit a Nostr Wallet Connect URI that will be used to automatically send the subscription fee every month <br / > < span className = "pl-4" > * you can cancel at any time . < / s p a n > < / l i >
2024-10-10 18:32:21 -05:00
< / u l >
< / d i v >
< / d i v >
2024-09-27 16:30:04 -05:00
< div className = "flex items-start" >
< i className = "pi pi-users text-2xl text-primary mr-2 text-purple-400 mt-1" > < / i >
< div >
2024-10-18 14:49:01 -05:00
< h3 className = "text-lg font-semibold" > Feeds : < / h 3 >
2024-09-27 16:30:04 -05:00
< p className = 'text-lg' > All of the current PlebDevs Community channels . < / p >
< ul className = "list-disc list-inside ml-2 mt-2 space-y-2" >
2024-10-10 18:32:21 -05:00
< li > < span className = "text-lg font-semibold" > Nostr : < /span> Public plebdevs nostr chat (Read / Write ) < br / > < span className = "pl-4" > * this is the only feed that you can write to from the plebdevs platform currently . < / s p a n > < / l i >
< li > < span className = "text-lg font-semibold" > Discord : < /span> PlebDevs Discord server (Read Only) <br / > < span className = "pl-4" > * discord was the original home of the PlebDevs community , look at us now ! < / s p a n > < / l i >
< li > < span className = "text-lg font-semibold" > StackerNews : < /span> StackerNews ~devs territory (Read Only) <br / > < span className = "pl-4" > * a territory is like a & apos ; subreddit & apos ; on stackernews , plebdevs owns the ~ devs territory . < / s p a n > < / l i >
2024-09-27 16:30:04 -05:00
< / u l >
< / d i v >
2024-11-14 15:14:28 -06:00
< / d i v >
{ /* techstack */ }
< div className = "flex items-start" >
< i className = "pi pi-cog text-2xl text-primary mr-2 text-gray-400 mt-1" > < / i >
< div >
< h3 className = "text-lg font-semibold" > Tech Stack : < / h 3 >
< h4 className = 'text-lg font-semibold' > Frontend : < / h 4 >
< ul className = "list-disc list-inside ml-2 mt-2 space-y-2" >
< li > < span className = "text-lg font-semibold" > Next . js : < / s p a n > A R e a c t f r a m e w o r k f o r b u i l d i n g s e r v e r - s i d e r e n d e r e d ( S S R ) w e b a p p l i c a t i o n s . < / l i >
< li > < span className = "text-lg font-semibold" > Tailwind CSS : < / s p a n > A u t i l i t y - f i r s t C S S f r a m e w o r k f o r r a p i d l y b u i l d i n g c u s t o m d e s i g n s . < / l i >
< li > < span className = "text-lg font-semibold" > PrimeReact : < / s p a n > A R e a c t U I l i b r a r y f o r b u i l d i n g m o d e r n , r e s p o n s i v e w e b a p p l i c a t i o n s . < / l i >
< / u l >
< h4 className = 'text-lg font-semibold' > Backend : < / h 4 >
< ul className = "list-disc list-inside ml-2 mt-2 space-y-2" >
< li > < span className = "text-lg font-semibold" > Prisma : < / s p a n > A d a t a b a s e t o o l k i t f o r N o d e . j s a n d T y p e S c r i p t . < / l i >
< li > < span className = "text-lg font-semibold" > PostgreSQL : < / s p a n > A p o w e r f u l , o p e n s o u r c e o b j e c t - r e l a t i o n a l d a t a b a s e s y s t e m . < / l i >
< li > < span className = "text-lg font-semibold" > Redis : < / s p a n > A n i n - m e m o r y d a t a s t r u c t u r e s t o r e , u s e d a s a d a t a b a s e , c a c h e , a n d m e s s a g e b r o k e r . < / l i >
< / u l >
< h4 className = 'text-lg font-semibold' > Infrastructure : < / h 4 >
< ul className = "list-disc list-inside ml-2 mt-2 space-y-2" >
< li > < span className = "text-lg font-semibold" > Vercel : < / s p a n > A c l o u d p l a t f o r m f o r b u i l d i n g m o d e r n w e b a p p l i c a t i o n s . < / l i >
< li > < span className = "text-lg font-semibold" > Docker : < / s p a n > A p l a t f o r m f o r b u i l d i n g , s h i p p i n g , a n d r u n n i n g d i s t r i b u t e d a p p l i c a t i o n s . < / l i >
< li > < span className = "text-lg font-semibold" > Digital Ocean ( CDN ) : < / s p a n > A c l o u d p l a t f o r m f o r b u i l d i n g m o d e r n w e b a p p l i c a t i o n s . < / l i >
< / u l >
< h4 className = 'text-lg font-semibold' > Open Source Tools : < / h 4 >
< ul className = "list-disc list-inside ml-2 mt-2 space-y-2" >
< li > < span className = "text-lg font-semibold" > NDK : < /span> Nostr Development Kit - <a href="https:/ / github . com / nostr - dev - kit / ndk " target=" _blank " rel=" noopener noreferrer " className=" text - blue - 400 " > https : //github.com/nostr-dev-kit/ndk</a></li>
< li > < span className = "text-lg font-semibold" > nostr - tools : < /span> React framework for building Nostr applications - <a href="https:/ / github . com / fiatjaf / nostr - tools " target=" _blank " rel=" noopener noreferrer " className=" text - blue - 400 " > https : //github.com/fiatjaf/nostr-tools</a></li>
< li > < span className = "text-lg font-semibold" > Bitcoin Connect : < /span> A simple open source tool for connecting to Lightning wallets and facilitating payments - <a href="https:/ / github . com / getAlby / bitcoin - connect " target=" _blank " rel=" noopener noreferrer " className=" text - blue - 400 " > https : //github.com/getAlby/bitcoin-connect</a></li>
< li > < span className = "text-lg font-semibold" > Alby JS SDK : < /span> JavaScript SDK for the Alby OAuth2 Wallet API and the Nostr Wallet Connect API. - <a href="https:/ / github . com / getAlby / js - sdk " target=" _blank " rel=" noopener noreferrer " className=" text - blue - 400 " > https : //github.com/getAlby/js-sdk</a></li>
< li > < span className = "text-lg font-semibold" > Zapthreads : < /span> A Nostr-based commenting system - <a href="https:/ / github . com / franzaps / zapthreads " target=" _blank " rel=" noopener noreferrer " className=" text - blue - 400 " > https : //github.com/franzaps/zapthreads</a></li>
< li > < span className = "text-lg font-semibold" > Zapper : < /span> A Nostr-based tipping platform - <a href="https:/ / github . com / nostrband / zapper " target=" _blank " rel=" noopener noreferrer " className=" text - blue - 400 " > https : //github.com/nostrband/zapper</a></li>
< / u l >
< / d i v >
2024-09-27 16:30:04 -05:00
< / d i v >
< / d i v >
< / C a r d >
2024-09-13 16:17:19 -05:00
2024-09-27 16:30:04 -05:00
< Card title = "Connect with Us" className = "mb-4" >
< div className = "flex flex-wrap gap-4 justify-center" >
< GenericButton
severity = "secondary"
outlined
icon = "pi pi-github"
2024-09-30 12:59:19 -05:00
tooltip = "Github"
className = "text-gray-300"
2024-10-17 10:49:34 -05:00
onClick = { ( ) => window . open ( 'https://github.com/austinkelsay/plebdevs' , '_blank' ) }
2024-09-27 16:30:04 -05:00
/ >
< GenericButton
severity = "info"
outlined
icon = "pi pi-twitter"
2024-09-30 12:59:19 -05:00
tooltip = "X"
2024-09-27 16:30:04 -05:00
onClick = { ( ) => window . open ( 'https://x.com/pleb_devs' , '_blank' ) }
/ >
< GenericButton
severity = "help"
outlined
2024-09-30 12:59:19 -05:00
icon = { < Image src = { NostrIcon } alt = "Nostr" width = { 20 } height = { 20 } className = "mr-0" / > }
tooltip = "Nostr"
2024-09-27 16:30:04 -05:00
onClick = { ( ) => window . open ( 'https://nostr.com/plebdevs@plebdevs.com' , '_blank' ) }
/ >
2024-10-07 16:26:54 -05:00
< GenericButton
severity = "danger"
outlined
icon = "pi pi-youtube"
tooltip = "Youtube"
onClick = { ( ) => window . open ( 'https://www.youtube.com/@plebdevs' , '_blank' ) }
/ >
2024-09-27 16:30:04 -05:00
< GenericButton
severity = "warning"
2024-09-30 12:59:19 -05:00
className = "text-yellow-400"
2024-09-27 16:30:04 -05:00
outlined
icon = "pi pi-bolt"
2024-09-30 12:59:19 -05:00
tooltip = "Donate"
2024-09-27 16:30:04 -05:00
onClick = { ( ) => copyToClipboard ( "austin@bitcoinpleb.dev" ) }
/ >
2024-09-13 16:17:19 -05:00
< / d i v >
2024-09-27 16:30:04 -05:00
< / C a r d >
2024-09-13 11:39:44 -05:00
< / d i v >
) ;
} ;
export default AboutPage ;