Typescript components for Shadow Drive.

Overview

Shadow Drive

Docs

Typescript components for Shadow Drive.

Quick Setup

Install

Install these dependencies:

yarn add @shadow-drive/sdk

Setup (React)

{ (async () => { if (wallet?.publicKey) { const drive = await new ShdwDrive(connection, wallet).init(); } })(); }, [wallet?.publicKey]) return (
) }">
import React, { useEffect } from "react";
import * as anchor from "@project-serum/anchor";
import {ShdwDrive} from "@shadow-drive/sdk";
import { AnchorWallet, useAnchorWallet, useConnection } from "@solana/wallet-adapter-react";

export default function Drive() {
	const { connection } = useConnection();
	const wallet = useAnchorWallet();
	useEffect(() => {
		(async () => {
			if (wallet?.publicKey) {
				const drive = await new ShdwDrive(connection, wallet).init();
			}
		})();
	}, [wallet?.publicKey])
	return (
		<div></div>
	)
}

Setup (NodeJS)

import {ShdwDrive} from "@shadow-drive/sdk";
const drive = await new ShdwDrive(connection, wallet).init();

Examples

package description
react Using shadow-drive in a react/browser environment

Build From Source

  1. Clone the project:
git clone https://github.com/genesysgo/shadow-drive.git
  1. Install dependencies:
cd shadow-drive
yarn install

Troubleshooting

Getting a 400 HTTP error code when performing POST requests

If you are getting a 400 HTTP error status code when using the POST ShdwDrive methods such as createStorageAccount, uploadFile, addStorage, etc.

Make sure to set your wallet adapter or connection commitment config to max.

<ConnectionProvider endpoint={network} config={{ commitment: 'max' }}>
  ...
</ConnectionProvider>
const connection = new solanaWeb3.Connection(
    "https://ssc-dao.genesysgo.net/",
	"max"
  );
Comments
  • Add browser build support

    Add browser build support

    This pull request adds support for building for the browser through yarn build. A new dist.browser folder is created upon running yarn build and contains files such as index.iife.js and index.iife.min.js that expose ShdwDrive directly in the browser.

    The rollup configuration is based on the configuration that we used when adding browser support to the SPL stake-pool JavaScript bindings.

    Please note that the browser build files have not been tested beyond verification that ShdwDrive exists in the browser and is populated with the relevant methods after the browser build file (either index.iife.js or index.iife.min.js) has been included. However, @SolBlazeOrg is planning to build on top of Shadow Drive and will be using these browser build files, so I can create subsequent commits or PRs if any errors occur with the browser build files.

    opened by CMEONE 9
  • Asks for a Private Key when uploading to an existing storage account

    Asks for a Private Key when uploading to an existing storage account

    Hello,

    I am trying to use the SDK to upload a file to my Shadow Drive. I have my wallet, the drive, find the correct account, and then I attempt to upload my file as a ShadowFile:

    const pngFileBuffer = fs.readFileSync(`${__dirname}/../output/0.png`);
    const pngShadowFile: ShadowFile  = {name: '0.png', file: pngFileBuffer}
    const pngFileUploadResult = await drive.uploadFile(shadowAccount.publicKey, pngShadowFile, "v2" );
    

    And it responds with

    }
    Error: TypeError: Cannot read properties of undefined (reading 'secretKey')
        at ShdwDrive.<anonymous> (upload-file.ts:93:27)
        at Generator.next (<anonymous>)
        at upload-file.js:8:71
        at new Promise (<anonymous>)
        at __awaiter (upload-file.js:4:12)
        at ShdwDrive.uploadFile (/upload-file.js:29:12)
        at shadowUtils.ts:33:41
        at processTicksAndRejections (node:internal/process/task_queues:95:5)
    Waiting for the debugger to disconnect...
    

    I am not sure how to go about debugging this - can you point me in the correct direction? Short of that, if you have a working example of uploading files through Node, I'd be very happy to see it.

    Thanks!

    opened by numisman 6
  • Can't Upload a File via both CLI and SDK

    Can't Upload a File via both CLI and SDK

    Current Behavior When executing the following command, shdw-drive upload-file --keypair ~/.config/solana/id.json --file ./assets/0.png the following output shows.

    This is beta software. Use at your own discretion.
    ✔ Which storage account do you want to use? › SAITO test - 2Rq...MxJ - 9.81 MB remaining
    ✖ Error processing transaction. See below for details:
    Server response status code: 400
    Server response status message: Error: failed to send transaction: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x1
    

    The same goes for SDK.

    Expected Behavior

    1. The error message is not appropriate. The status code 400 is used as "Not Found Error" in general, but some transactions have failed actually.
    2. Fix the problem to upload a file.
    opened by saito-kosuke 6
  • Not Found Airdrop Command

    Not Found Airdrop Command

    Current Behavior When execution of the following command, shdw-drive airdrop-shdw -r <any wallet address> the output as follows show.

    This is beta software. Use at your own discretion.
    error: unknown command 'airdrop-shdw'
    

    Expected Behavior We should add airdrop-shdw command.

    opened by saito-kosuke 3
  • Dead link to Node examples

    Dead link to Node examples

    https://github.com/GenesysGo/shadow-drive/blob/537c381dbe3d7b91b30a73fd9cd6c15ce7cd7764/README.md?plain=1#L56

    Are there Node examples that weren't deployed and this is just a placeholder? Or is this a need for the repo?

    opened by numisman 2
  • Available storage bytes not updating after decreasing or increasing storage

    Available storage bytes not updating after decreasing or increasing storage

    SDK version: 3.0.4 Platform: Web (JS)

    When decreasing or increasing storage on accounts, the available storage (account.storageAvailable) is not updating.

    This is when calling the following methods:

    addStorage(account, '5MB', 'v1')
    reduceStorage(account, '3MB', 'v1')
    

    Decreasing from 10MB to 7MB: CleanShot 2022-07-16 at 00 36 37 CleanShot 2022-07-16 at 00 36 44

    Increasing from 7MB to 12MB: CleanShot 2022-07-16 at 00 39 05 CleanShot 2022-07-16 at 00 39 22

    Here's the storage account public key for reference: 4q947fGHu18vyedSSVFqzW5QjyfXMWmCgkWzm3jDxPTE

    opened by bntzio 2
  • UploadFile does not accept browser FormData (getBuffer is not a function)

    UploadFile does not accept browser FormData (getBuffer is not a function)

    Hey guys, it looks like the uploadFile function is expecting the node version of FormData so is erroring due to missing buffer function for the payload. I have tried with both native FormData & NPM form-data package but get the same error:

    File upload error TypeError: data.getBuffer is not a function
        at ShdwDrive.eval (upload-file.js?7010:53:1)
        at Generator.next (<anonymous>)
        at fulfilled (upload-file.js?7010:28:1)
    

    Native FormData: image

    bug 
    opened by cloakd 2
  • CORS preflight error on http & https when calling `createStorageAccount`

    CORS preflight error on http & https when calling `createStorageAccount`

    When attempting to create a storage account on web frontend its rejecting due to blocked content-type header field on the preflight check. Should just be a matter of adding it to AllowHeaders on nginx/endpoint config.

    Calling code:

    this.drive.createStorageAccount("Example", "1MB");
    

    Endpoint: [POST] https://shadow-storage.genesysgo.net/storage-account Status code: (Failing on preflight so no status) - CORS Error Error: Access to fetch at 'https://shadow-storage.genesysgo.net/storage-account' from origin 'https://jovial-gingersnap-4394fd.netlify.app' has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

    Request (Images come from an earlier test on localhost but same result on the https endpoint): image image image

    bug 
    opened by cloakd 2
  • Migration call fails on second transaction

    Migration call fails on second transaction

    SDK version: 3.0.4 Platform: Web (JS)

    Whenever you try to migrate a storage account from v1 to v2 using the migrate method, the first transaction succeeds, but the second one throws the following error message:

    Error: Error: failed to send transaction: Transaction simulation failed: Error processing Instruction 0: custom program error: 0xbc4
    

    When retrying the migration on those storage accounts, the transaction reads as: Transaction may fail to confirm, and fails with the following error:

    Error: Error: failed to send transaction: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x7d6
    

    Here are some transactions that succeeded, but when approving the second one (and further attempts) it throws the errors described above:

    https://explorer.solana.com/tx/5XseKcSZmvKdL8KAyJz4E1gQRe3vzQ7LSAhEnAV9CfXYft3TwP5JZQwmdf2jCRM7uMqVRC9Tf5Lh9cUckMJP566B

    https://explorer.solana.com/tx/4MmkU1oK5VN5qmAGv6XU6kY9CWwwBS6ab7VRRNGXPv7psQH1M5kztTLPUGdeoSAR7ZuBPfCSUpA4nhbfgtJuqCSs

    https://explorer.solana.com/tx/2xsmbG62jxT2ZqwN4xM9NMAUEjSf5AgJD16Lx961dFeZ7766Sm3JH7gsMTZxhzoYodYZK6LaJGFZtvYTbLQK9Lg9

    opened by bntzio 1
  • upload-file doesn't support -s option (CLI issue)

    upload-file doesn't support -s option (CLI issue)

    When specifiying the -s option on upload-file, the following error is thrown:

    ✔ Collecting all files
    /Users/sven/Library/Application Support/fnm/node-versions/v18.1.0/installation/lib/node_modules/@shadow-drive/cli/node_modules/@solana/web3.js/lib/index.cjs.js:1861
              throw new Error(`Invalid public key input`);
                    ^
    
    Error: Invalid public key input
        at new PublicKey (/Users/sven/Library/Application Support/fnm/node-versions/v18.1.0/installation/lib/node_modules/@shadow-drive/cli/node_modules/@solana/web3.js/lib/index.cjs.js:1861:17)
        at handleUpload (/Users/sven/Library/Application Support/fnm/node-versions/v18.1.0/installation/lib/node_modules/@shadow-drive/cli/dist/shdw-drive.js:439:26)
        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
        at async Command.<anonymous> (/Users/sven/Library/Application Support/fnm/node-versions/v18.1.0/installation/lib/node_modules/@shadow-drive/cli/dist/shdw-drive.js:190:5)
    
    Node.js v18.1.0
    

    Running shdw-drive v0.1.1

    opened by robbestad 1
  • Cannot edit-file (CLI issue)

    Cannot edit-file (CLI issue)

    command: BROWSER="" shdw-drive edit-file -f filename.zip -kp WALLETLOCATION n -u https://shdw-drive.genesysgo.net/CEjTaaFFpWymDgBmW3gCL4JNX9v16yjLtp5bohStpskP/filename.zip

    This is beta software running on Solana's Mainnet. Use at your own discretion.
    /Users/sven/Library/Application Support/fnm/node-versions/v18.1.0/installation/lib/node_modules/@shadow-drive/cli/dist/shdw-drive.js:233
        const fileOwnerOnChain = new anchor.web3.PublicKey(fileDataResponse.file_data["owner-account-pubkey"]);
                                                                                     ^
    
    TypeError: Cannot read properties of undefined (reading 'owner-account-pubkey')
        at Command.<anonymous> (/Users/sven/Library/Application Support/fnm/node-versions/v18.1.0/installation/lib/node_modules/@shadow-drive/cli/dist/shdw-drive.js:233:82)
        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    
    Node.js v18.1.0
    

    Running shdw-drive v0.1.1

    opened by robbestad 1
  • reduce-storage returns HTTP 400 Blockhash not found

    reduce-storage returns HTTP 400 Blockhash not found

    I'm using the SDK. addStorage works fine on the same storage account, but reduceStorage fails. Given the same pubkey:

    await drive.addStorage(pubkey, incrementSizeUnited, "v2") //works await drive.reduceStorage(pubkey, size, "v2") //fails with Blockhash not found

    opened by jokumusic 0
  • Migrated storage accounts not returned

    Migrated storage accounts not returned

    When I try to migrate a storage account from v1 to v2 (after successfully approving the 2 prompted transactions) the getStorageAccounts('v1') and getStorageAccounts('v2') methods does not return those migrated spaces at all sometimes, and when they do, sometimes those migrated accounts comes as either v1 or v2, when the expected result is to always return on the getStorageAccounts('v2') call.

    Here's an example of the payload I get for an already migrated account:

    CleanShot 2022-10-01 at 14 48 10@2x

    Sometimes it doesn't return at all (this is the most common behavior).

    Here are the transaction:

    MigrateStep1 - https://solscan.io/tx/GksvwNZbT1LuXccoFyUAMw7nAjwm1yKRyK2XiDVcf8aV4tiAmDAfLCrtKeu5hYt3T4mVNrcLbcMEQNAcoUG4ZFQ

    MigrateStep2 - https://solscan.io/tx/3dkRZMAXjoVEnzofcva4kTrZosdZDd4SgHcErL8xYSNid7rBNTs5Ew6ZBiffxwcF71ZDD8oWov56yXhEVavJ72xM

    I've tried it with multiple storage accounts and it's the same behavior, as if those migrated accounts were not in sync.

    I'll leave some migrated accounts in case it's useful:

    • CrKkJpkLKMRpPDwvNKD8xJxHQKaDS8EFDxyGTVrrARqs
    • 41TXBfUtqX4ozoiQUaLnvuTmaPYaA7zu59tnvXW1A69C
    • AYzdTKgwg5smkcENJz3vfS1K84hUTWUugv1SKXWMPxFz
    • CSEgQz7phzXoi8Yye5D7722myX4HR6s6Pg6XNti4Bg8B
    opened by bntzio 8
  • Type issue on delete

    Type issue on delete

    https://github.com/GenesysGo/shadow-drive/blob/537c381dbe3d7b91b30a73fd9cd6c15ce7cd7764/src/methods/delete-file.ts#L19 https://github.com/GenesysGo/shadow-drive/blob/537c381dbe3d7b91b30a73fd9cd6c15ce7cd7764/src/methods/delete-file.ts#L74

    This operation says it returns a txid as ShadowDriveResponse but it returns a message on success. So in order to correctly type I had to do this:

    interface ExtendedShadowDriveResponse extends ShadowDriveResponse{
            message?:string
        }
    
    opened by robbestad 1
  • File size are not listing with files name.

    File size are not listing with files name.

    Hi, I am using this package. I need to show file size as well when we call listObjects using this package. or any other function available for that please let me know.

    opened by hussammustafa 2
  • Cannot make v1 storage accounts immutable

    Cannot make v1 storage accounts immutable

    SDK version: 3.0.4 Platform: Web (JS)

    When calling the following method on a v1 storage account:

    makeStorageImmutable(publicKey, 'v1')
    

    It throws the following error:

    Server response status code: 400
    
    Server response status message: "Error: failed to send transaction: Transaction simulation failed: Error processing Instruction 0: custom program error: 0xbba"
    

    V2 storage accounts works good.

    opened by bntzio 2
Releases(v3.0.10)
  • v3.0.10(Nov 28, 2022)

  • v3.0.9(Nov 28, 2022)

    What's Changed

    • Add correct edit response type by @bntzio in https://github.com/GenesysGo/shadow-drive/pull/68
    • Decode url in file delete method by @bntzio in https://github.com/GenesysGo/shadow-drive/pull/67
    • Add version type to storage account info response by @bntzio in https://github.com/GenesysGo/shadow-drive/pull/66
    • Add math.ceil for bytes by @tracy-codes in https://github.com/GenesysGo/shadow-drive/pull/64
    • Fixes concurrency rate when only 1 file by @tracy-codes in https://github.com/GenesysGo/shadow-drive/pull/63

    Full Changelog: https://github.com/GenesysGo/shadow-drive/compare/v3.0.8...v3.0.9

    Source code(tar.gz)
    Source code(zip)
  • v3.0.8(Sep 21, 2022)

    What's Changed

    • Fix no files available to upload bug by @tracy-codes in https://github.com/GenesysGo/shadow-drive/pull/60
    • change to-do location for typedoc generation by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/61

    Full Changelog: https://github.com/GenesysGo/shadow-drive/compare/v3.0.7...v3.0.8

    Source code(tar.gz)
    Source code(zip)
  • v3.0.7(Sep 21, 2022)

    What's Changed

    • Add callback function parameter by @tracy-codes in https://github.com/GenesysGo/shadow-drive/pull/59

    Full Changelog: https://github.com/GenesysGo/shadow-drive/compare/v3.0.6...v3.0.7

    Source code(tar.gz)
    Source code(zip)
  • v3.0.6(Jul 26, 2022)

    What's Changed

    • Add immutable account support to add-storage by @tracy-codes in https://github.com/GenesysGo/shadow-drive/pull/54

    Full Changelog: https://github.com/GenesysGo/shadow-drive/compare/v3.0.5...v3.0.6

    Source code(tar.gz)
    Source code(zip)
  • v3.0.5(Jul 23, 2022)

    What's Changed

    • Add shadow drive version type by @bntzio in https://github.com/GenesysGo/shadow-drive/pull/44
    • increase commitment for migrateStep1 by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/51
    • Bump terser from 5.13.1 to 5.14.2 in /examples/web by @dependabot in https://github.com/GenesysGo/shadow-drive/pull/50
    • Release/3.0.5 by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/52

    New Contributors

    • @dependabot made their first contribution in https://github.com/GenesysGo/shadow-drive/pull/50

    Full Changelog: https://github.com/GenesysGo/shadow-drive/compare/v3.0.4...v3.0.5

    Source code(tar.gz)
    Source code(zip)
  • v3.0.4(Jul 12, 2022)

    What's Changed

    • send file location with edit req by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/42
    • concurrency by @21e8 in https://github.com/GenesysGo/shadow-drive/pull/41

    Full Changelog: https://github.com/GenesysGo/shadow-drive/compare/v3.0.2...v3.0.4

    Source code(tar.gz)
    Source code(zip)
  • v3.0.2(Jul 8, 2022)

    What's Changed

    • Fix multi upload hash issue by @cloakd in https://github.com/GenesysGo/shadow-drive/pull/35
    • single upload endpoint - fileseeds no longer required by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/39
    • fix delete-file request by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/40

    New Contributors

    • @cloakd made their first contribution in https://github.com/GenesysGo/shadow-drive/pull/35

    Full Changelog: https://github.com/GenesysGo/shadow-drive/compare/v3.0.1...v3.0.2

    Source code(tar.gz)
    Source code(zip)
  • v3.0.1(Jul 7, 2022)

    What's Changed

    • Add GenesysGo logo to README by @bntzio in https://github.com/GenesysGo/shadow-drive/pull/32
    • V1.5 by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/34
    • Add npm lifecycle scripts by @bntzio in https://github.com/GenesysGo/shadow-drive/pull/33
    • Fix multiple file uploads by @bntzio in https://github.com/GenesysGo/shadow-drive/pull/31
    • [enhancement] use PublicKey.equals for comparisons by @21e8 in https://github.com/GenesysGo/shadow-drive/pull/26

    Full Changelog: https://github.com/GenesysGo/shadow-drive/compare/v2.0.4...v3.0.1

    Source code(tar.gz)
    Source code(zip)
  • v2.0.4(Jun 17, 2022)

    What's Changed

    • [enhancement] add list-objects call to api by @21e8 in https://github.com/GenesysGo/shadow-drive/pull/28
    • Fix file buffer type by @tracy-codes in https://github.com/GenesysGo/shadow-drive/pull/29
    • [enhancement] Create type and remove wallet-adapter dependency by @21e8 in https://github.com/GenesysGo/shadow-drive/pull/27
    • Remove FormData from node example by @regonn in https://github.com/GenesysGo/shadow-drive/pull/23

    New Contributors

    • @tracy-codes made their first contribution in https://github.com/GenesysGo/shadow-drive/pull/29
    • @regonn made their first contribution in https://github.com/GenesysGo/shadow-drive/pull/23

    Full Changelog: https://github.com/GenesysGo/shadow-drive/compare/v2.0.3...v2.0.4

    Source code(tar.gz)
    Source code(zip)
  • v2.0.3(May 26, 2022)

    What's Changed

    • v2.0.3 - Updated IDL by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/22

    Full Changelog: https://github.com/GenesysGo/shadow-drive/compare/v2.0.2...v2.0.3

    Source code(tar.gz)
    Source code(zip)
  • v2.0.2(May 25, 2022)

    What's Changed

    • Add troubleshooting section by @bntzio in https://github.com/GenesysGo/shadow-drive/pull/12
    • Improved error handling - return error from middleware server txn by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/13
    • Fix buffer size issue when uploading images with different encodings by @21e8 in https://github.com/GenesysGo/shadow-drive/pull/18
    • Extend ShadowBatchUploadResponse with tx sig, use type by @21e8 in https://github.com/GenesysGo/shadow-drive/pull/19
    • Set react as peer dependency by @bntzio in https://github.com/GenesysGo/shadow-drive/pull/17
    • Version and docs update by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/21

    New Contributors

    • @21e8 made their first contribution in https://github.com/GenesysGo/shadow-drive/pull/18

    Full Changelog: https://github.com/GenesysGo/shadow-drive/compare/v2.0.0...v2.0.2

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(May 18, 2022)

    What's Changed

    This release contains breaking changes, notably the ShdwDrive class is no longer exported as a default. This will eliminate the need for a further change when the ShdwDrive class methods are properly exported from the class at a later date.

    • Support added for browser file uploads
    • Support added for batch file uploads
    • Modifications to env detection
    • Modifications to the arguments for upload, uploadMultipleFiles, and editFiles. These methods now expect a File or FileList type to be passed when in browser environments and type "ShadowFile" an object containing file name and the file buffer when in node environments
    • v2.0 by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/8

    Full Changelog: https://github.com/GenesysGo/shadow-drive/compare/v1.0.2...v2.0.0

    Source code(tar.gz)
    Source code(zip)
  • v1.0.2(May 18, 2022)

    What's Changed

    • Initial Shadow Drive SDK release fully supporting the following methods:
      • createStorageAccount
      • addStorage
      • claimStake
      • deleteFile
      • deleteStorageAccount
      • editFile
      • getStorageAccount
      • getStorageAccounts
      • makeStorageImmutable
      • reduceStorage
      • cancelDeleteFile
      • cancelDeleteStorageAccount
      • uploadFile (node.js)
    • package location by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/1
    • sendAndConfirm by @khaIilnafis in https://github.com/GenesysGo/shadow-drive/pull/2
    • Do not check process on browser environments by @bntzio in https://github.com/GenesysGo/shadow-drive/pull/7

    New Contributors

    • @khaIilnafis made their first contribution in https://github.com/GenesysGo/shadow-drive/pull/1
    • @bntzio made their first contribution in https://github.com/GenesysGo/shadow-drive/pull/7

    Full Changelog: https://github.com/GenesysGo/shadow-drive/commits/v1.0.2

    Source code(tar.gz)
    Source code(zip)
Owner
GenesysGo
GenesysGo
org-mode on the web, built with React, optimized for mobile, synced with Dropbox and Google Drive

org-mode on the web, built with React, optimized for mobile, synced with Dropbox and Google Drive

Daniel de Haas 1.3k Dec 6, 2022
React, Next.js, MaterialUI, Styled-Components, TypeGraphQL, URQL, ApolloServer (express), TypeORM, PostgreSQL, Node.js, TypeScript

This repo is inspired by https://github.com/benawad/lireddit Features Include: Server-side rendered data from postgres Create user graphql mutation wi

Brayden Werner 171 Sep 25, 2022
Artemis UI is a react components library build with StoryBook, Typescript and SASS primarily for e-commerce applications

Artemis UI About Artemis UI is a react components library build with StoryBook, Typescript and SASS primarily for e-commerce applications. Docs and De

Rishu Patel 5 Nov 26, 2022
Website to provide Service for Finances App Expense and Revenue Management. Developed using ViteJS, TypeScript, ReactJS, Styled-Components and Framer Motion.

Website to provide Service for Finances App Expense and Revenue Management. Developed using ViteJS, TypeScript, ReactJS, Styled-Components and Framer Motion.

Finances App 8 Aug 31, 2022
A simple project starter to work with TypeScript, React, NextJS and Styled Components

Next.js boilerplate What is inside? This project uses lot of stuff as: TypeScript NextJS Styled Components Jest React Testing Library Cypress Eslint P

Marcos Andre 6 Nov 10, 2022
🎮 2048 clone (React/TypeScript/Redux). No canvas.

2048 • Demo This is a reimplementation of Gabriele Cirulli's excellent 2048 game, built with React, Redux and TypeScript. Unlike other React-based imp

Mat Sz 63 Nov 28, 2022
A Fullstack Discord Clone written in Typescript.

Valkyrie A Discord clone written in TypeScript. Live Demo (Note: File Upload is disabled on the public demo to reduce hosting cost) Video Features Mes

null 219 Nov 28, 2022
A simplified Jira clone built with React/Babel (Client), and Node/TypeScript (API). Auto formatted with Prettier, tested with Cypress.

A simplified Jira clone built with React and Node Auto formatted with Prettier, tested with Cypress ?? Visit the live app | View client | View API Wha

Ivor Reic 9.3k Dec 7, 2022
👻 A SnapChat clone built with React, Redux and Typescript. Styled with SASS. Tested with Cypress, Jest and Enzyme. Linted with Eslint and formatted with Prettier!

?? SnapChat Clone [LIVE APP] [Live App] • [Video Demo] ⚡️ Breakdown Built with React Only functional components using hooks Folder structure: Flat - n

null 940 Dec 1, 2022
Simple Spotify UI Clone built with React + Electron + Typescript.

Spotify UI Clone Simple Spotify UI Clone built using React + Typescript + Electron. I also built this template on Figma if you are interested. Install

Mateus Pandino 45 Nov 22, 2022
Chroma is an open source design system from the team at LifeOmic built with React and TypeScript.

Chroma is an open source design system from the team at LifeOmic. It is built with React and TypeScript. The goal of Chroma is to provide design-approved components to developers to speed up their development process and build visual consistency throughout web applications.

LifeOmic 47 Nov 5, 2022
A simple React zing mp3 apps built with React Typescript, Redux and TailwindCSS.

React Typescript Zingmp3 A simple React zing mp3 apps built with React Typescript, Redux and TailwindCSS. Working application Checkout: https://60a609

Tony Nguyen 19 Oct 14, 2022
Esse projeto é uma aplicação que exibe os dados climáticos da região do usuário e de cidades escolhidas. Feito com React Native, typescript e outras tecnologias.

Weather APP Esse projeto é uma aplicação que exibe os dados climáticos da região do usuário e de cidades escolhidas. Features • Pré Requisitos • Rodan

Arthur Pimentel Cordeiro 16 Sep 14, 2022
Facebook Clone - A simple, responsive Facebook Clone made using Typescript and React.

Facebook Clone A simple, responsive Facebook Clone made using Typescript and React. I chose vitejs as a build tool for this project (Thanks @karanprat

Ayushi Gupta 97 Dec 3, 2022
Uniswap V3 Fee Calculator created with React & Typescript

?? UniswapCalculator Uniswap V3 Fee Calculator created with React & Typescript, Visit: uniswapv3.thechun.dev Disclaimer: please do your own research,

Chun Rapeepat 127 Dec 1, 2022
A modified clone of the puzzle game 2048, built in react/typescript!

Twenty48 This is a modified clone of the game 2048, which can be seen here: 2048! This project is built using React, Typescript, and Sass. This also g

Chris 30 Nov 28, 2022
A simple todo app made with react and typescript

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

Nishant Bhosale 8 Nov 8, 2021
Fully working Discord clone with the essential features. Made with React + Redux + TypeScript.

Fully working Discord clone with the essential features. Made with React + Redux + TypeScript.

null 51 Dec 1, 2022
a 2048 clone built with React and Typescript. Including Animations!

Getting Started with 2048 This game (2048) was built using React and TypeScript. The unique part of this example is animations. The animations in Reac

Mateusz Sokola 58 Dec 2, 2022