Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
c8468d7
feat: Enhance access control and testing infrastructure
Oba-One Sep 13, 2025
84c948c
Merge branch 'dev' of github.com:greenpill-dev-guild/cookie-jar into …
Oba-One Sep 13, 2025
f76ca19
feat: Introduce NFT Testing Guide and enhance access control
Oba-One Sep 17, 2025
754dd62
refactor: Clean up and optimize component imports and structure
Oba-One Sep 18, 2025
05edd17
feat: Update environment configuration and enhance client functionality
Oba-One Sep 19, 2025
9d766d5
chore: Remove obsolete log files
Oba-One Sep 19, 2025
bbcd688
Merge pull request #9 from greenpill-dev-guild/feat/ui-revamp
Oba-One Sep 19, 2025
9fe27c1
Merge branch 'dev' of github.com:greenpill-dev-guild/cookie-jar into …
Oba-One Sep 19, 2025
49c95c0
refactor: Update component imports and enhance utility functions
Oba-One Sep 19, 2025
179ed96
feat: Remove NFT Testing Guide and enhance footer component
Oba-One Sep 19, 2025
5702d1f
chore: Clean up pnpm-lock.yaml by removing obsolete dependencies
Oba-One Sep 19, 2025
14f37e4
feat: Optimize client performance with lazy loading and update docume…
Oba-One Sep 19, 2025
be22af8
Merge pull request #10 from greenpill-dev-guild/feat/client-refactor-…
Oba-One Sep 19, 2025
83ac602
feat: Enhance NFT validation and withdrawal processes with balance pr…
Oba-One Sep 20, 2025
4710fd8
feat: Introduce denylist functionality and update environment configu…
Oba-One Sep 21, 2025
1565166
feat: Implement end-to-end testing framework with Playwright
Oba-One Sep 21, 2025
5e13319
refactor: Transition to Vitest for testing framework and remove obsol…
Oba-One Sep 21, 2025
67209d7
Merge pull request #13 from greenpill-dev-guild/feat/nft-gates
Oba-One Sep 21, 2025
b8bb090
feat: Add preinstall script and dependency installation script
Oba-One Sep 21, 2025
e634211
refactor: Revise README and client documentation for clarity and conc…
Oba-One Sep 21, 2025
5a4f9c5
chore: Update E2E testing workflow and enhance test script
Oba-One Sep 21, 2025
93ea40f
fix: Update access control error handling and test cases
Oba-One Sep 21, 2025
a87bd7d
feat: Implement denylist functionality in CookieJar contract and client
Oba-One Sep 21, 2025
5934878
Merge pull request #14 from greenpill-dev-guild/feat/nft-gates-patch
Oba-One Sep 21, 2025
3c254ac
Merge branch 'dev' of github.com:greenpill-dev-guild/cookie-jar into …
Oba-One Sep 21, 2025
849cc07
chore: Clean up pnpm-lock.yaml by removing unused dependencies
Oba-One Sep 21, 2025
38227fd
chore: Enhance CI workflows and improve NFT tests
Oba-One Sep 21, 2025
d6d08fd
chore: Improve CI workflows and enhance NFT tests
Oba-One Sep 21, 2025
ae544ed
chore: Enhance CI workflows for linting and testing
Oba-One Sep 21, 2025
684f631
chore: Refine CI workflows for linting and testing
Oba-One Sep 21, 2025
d2d1593
chore: Update ESLint configuration and improve CI workflows
Oba-One Sep 21, 2025
4f18f2b
chore: Update CI workflows and improve code quality checks
Oba-One Sep 21, 2025
ee0b978
chore: Update dependencies and improve testing environment
Oba-One Sep 21, 2025
de21f30
chore: Update configuration files and improve code consistency
Oba-One Sep 21, 2025
30591f3
chore: Update vercel.json ignore command for improved deployment checks
Oba-One Sep 21, 2025
6c8ee7d
refactor: Simplify EnhancedNFTGateInput tests and improve validation …
Oba-One Sep 21, 2025
9f563a7
Merge pull request #12 from greenpill-dev-guild/enhancement/e2e-test-…
Oba-One Sep 21, 2025
d821aa4
chore: Update package.json and pnpm-lock.yaml for axios versioning
Oba-One Sep 21, 2025
8459287
feat: Improve accessibility documentation and enhance input validation
Oba-One Sep 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .cursorignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
.env
.env.local
.env.development
.env.test
.env.production

121 changes: 81 additions & 40 deletions .env.sample
Original file line number Diff line number Diff line change
@@ -1,67 +1,108 @@
# πŸͺ Cookie Jar Environment Configuration
# Copy this file to .env.local and fill in your values
# Cookie Jar Environment Configuration

# =============================================================================
# FRONTEND CONFIGURATION
# BLOCKCHAIN NETWORKS & RPC ENDPOINTS
# =============================================================================

# WalletConnect Project ID (required for wallet connections)
# Get one at: https://cloud.walletconnect.com/
NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID=""
# Alchemy API Key (works across all supported networks)
NEXT_PUBLIC_ALCHEMY_API_KEY=your_alchemy_api_key

# Alchemy API Key (optional but recommended for better RPC performance)
# Get one at: https://www.alchemy.com/
NEXT_PUBLIC_ALCHEMY_ID=""
# Moralis API Key (alternative NFT provider)
NEXT_PUBLIC_MORALIS_API_KEY=your_moralis_api_key

# =============================================================================
# CONTRACTS CONFIGURATION
# NFT & METADATA SERVICES
# =============================================================================

# Deployer private key (for testnet/mainnet deployments)
# ⚠️ NEVER commit real private keys to version control!
PRIVATE_KEY=
# OpenSea API Key (for collection verification and floor prices)
NEXT_PUBLIC_OPENSEA_API_KEY=your_opensea_api_key

# Anvil private key (hardcoded for local development - safe to commit)
ANVIL_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
# Reservoir API Key (for NFT marketplace data)
NEXT_PUBLIC_RESERVOIR_API_KEY=your_reservoir_api_key

# Etherscan API key for contract verification
ETHERSCAN_API_KEY=dummy
# IPFS Gateway Configuration
NEXT_PUBLIC_IPFS_GATEWAY=https://gateway.pinata.cloud/ipfs/
NEXT_PUBLIC_PINATA_JWT=your_pinata_jwt_for_uploads

# Deployment configuration
DEPLOYER_SCRIPT=Deploy.s.sol:Deploy
DEPLOYER_CHAIN_NAME=celo-alfajores
# =============================================================================
# DEVELOPMENT & TESTING
# =============================================================================

# Enable debug mode for NFT validation
NEXT_PUBLIC_DEBUG_NFT_VALIDATION=false

# Mock NFT data in development (set to true to use mock data)
NEXT_PUBLIC_USE_MOCK_NFT_DATA=false

# NFT validation cache duration (minutes)
NEXT_PUBLIC_NFT_CACHE_DURATION=60

# Maximum NFTs to load per collection (performance limit)
NEXT_PUBLIC_MAX_NFTS_PER_COLLECTION=1000

# =============================================================================
# RPC ENDPOINTS
# SECURITY & RATE LIMITING
# =============================================================================

# Celo Network
CELO_URL="https://forno.celo.org"
ALFAJORES_URL="https://alfajores-forno.celo-testnet.org"
# Rate limiting for NFT API calls (requests per minute)
NEXT_PUBLIC_API_RATE_LIMIT=60

# Timeout for NFT metadata fetching (milliseconds)
NEXT_PUBLIC_NFT_FETCH_TIMEOUT=10000

# Maximum concurrent NFT validation requests
NEXT_PUBLIC_MAX_CONCURRENT_VALIDATIONS=5

# =============================================================================
# ANALYTICS & MONITORING
# =============================================================================

# Ethereum Network
ETHEREUM_URL="https://eth.drpc.org"
SEPOLIA_URL="https://sepolia.drpc.org"
# Enable NFT gating analytics
NEXT_PUBLIC_ENABLE_NFT_ANALYTICS=true

# Base Network
BASE_URL="https://base.drpc.org"
BASE_SEPOLIA_URL="https://sepolia.base.org"
# Sentry DSN for error tracking
NEXT_PUBLIC_SENTRY_DSN=your_sentry_dsn

# Local development (Anvil)
RPC_URL=http://127.0.0.1:8545

# =============================================================================
# CONTRACT VERIFICATION
# CONTRACT DEPLOYMENT CONFIGURATION
# =============================================================================
# Production deployments use Foundry Keystore (SECURE)
# Import your account: cast wallet import deployer --interactive
KEYSTORE_ACCOUNT=deployer

# Local development only (NOT for production!)
# Only set this for local Anvil deployments
# PRIVATE_KEY=your_private_key_for_local_development_only

# Deployer address for reference (not used in deployment)
DEPLOYER_ADDRESS=your_deployer_address


# Etherscan API keys for different networks
ETHERSCAN_API_KEY=
BASESCAN_API_KEY=
CELOSCAN_API_KEY=
# RPC URLs for deployment
ETHEREUM_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/your_api_key
BASE_RPC_URL=https://base-mainnet.g.alchemy.com/v2/your_api_key
SEPOLIA_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/your_api_key

# Etherscan API keys for contract verification
ETHERSCAN_API_KEY=your_etherscan_api_key

# =============================================================================
# LOCAL DEVELOPMENT CONFIGURATION
# USAGE INSTRUCTIONS
# =============================================================================

# Path to local deployment file (relative to contracts directory)
LOCAL_DEPLOYMENT_FILE=../client/public/contracts/local-deployment.json
# 1. Copy this file to .env.local for local development
# 2. Replace placeholder values with your actual API keys
# 3. Never commit .env.local to version control
# 4. For production, set these as environment variables on your deployment platform

# REQUIRED for basic functionality:
# - NEXT_PUBLIC_ALCHEMY_API_KEY (at minimum)

# RECOMMENDED for full features:
# - NEXT_PUBLIC_OPENSEA_API_KEY (for collection verification)
# - NEXT_PUBLIC_PINATA_JWT (for IPFS uploads)

# OPTIONAL enhancements:
# - NEXT_PUBLIC_MORALIS_API_KEY (alternative NFT provider)
# - NEXT_PUBLIC_RESERVOIR_API_KEY (marketplace data)
44 changes: 44 additions & 0 deletions .github/actions/setup-node-pnpm/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: 'Setup Node.js and pnpm'
description: 'Setup Node.js, pnpm, and install dependencies for Cookie Jar project'

inputs:
node-version:
description: 'Node.js version to use'
required: false
default: '18'
pnpm-version:
description: 'pnpm version to use'
required: false
default: '8'
working-directory:
description: 'Working directory to run commands'
required: false
default: '.'

runs:
using: 'composite'
steps:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}
cache: 'npm'
cache-dependency-path: '${{ inputs.working-directory }}/pnpm-lock.yaml'

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: ${{ inputs.pnpm-version }}

- name: Install dependencies
shell: bash
working-directory: ${{ inputs.working-directory }}
run: |
# Try frozen lockfile first, fallback to regular install in CI
if [ "$CI" = "true" ] || [ "$GITHUB_ACTIONS" = "true" ]; then
echo "πŸ€– CI environment detected"
pnpm install --no-frozen-lockfile || pnpm install
else
echo "πŸ”’ Using frozen lockfile for local consistency"
pnpm install --frozen-lockfile
fi
Loading
Loading