Skip to content

rasata/greeting-wall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Greeting Wall

A self-hosted service for creating and managing company greeting walls, perfect for end-of-year wishes and celebrations.

🚀 Features

📝 See RELEASE_NOTES.md for detailed version history and features

  • Dynamic company-specific greeting walls
  • Rich text editor for messages with formatting options
  • LinkedIn company integration and logo fetching
  • Responsive design with mobile support
  • Interactive animations and effects:
    • Message drop-in animations
    • Firework particle effects
    • Candy crush-style bubble pop effects
    • Theme customization with gradient backgrounds
  • Message management (create, delete, view)

Screenshots

Company Greeting Wall Company-specific greeting wall with interactive messages and animations

Add New Wish Rich text editor for adding personalized wishes

Mobile Experience Responsive mobile interface with optimized interactions

✨ Detailed Features

Company Integration

  • Automatic LinkedIn company profile detection
  • Company logo fetching and display
  • Company information validation
  • Custom URL generation based on company name

Message Management

  • Rich text editor with formatting options
  • Anonymous or signed messages
  • Message moderation capabilities
  • Expandable message view
  • Delete functionality for administrators

Visual Effects

  • Dynamic particle animations
  • Firework effects on new messages
  • Confetti celebrations
  • Star field background
  • Smooth message reveal animations
  • Theme switching (Aurora, Midnight, Sunset)

Mobile Experience

  • Fully responsive design
  • Touch-optimized interactions
  • Mobile-first animations
  • Adaptive layout for different screen sizes
  • Native share integration

Social Features

  • Direct LinkedIn company profile links
  • Social media sharing (Twitter, Facebook)
  • Native share API integration
  • Message permalinks
  • Embeddable message views

Security & Performance

  • Row Level Security (RLS)
  • API route protection
  • Rate limiting
  • Optimized image loading
  • Lazy-loaded components
  • Error boundaries for stability

User Experience

  • Loading states with spinners
  • Error handling with user feedback
  • Smooth transitions
  • Keyboard accessibility
  • Cross-browser compatibility

đź›  Tech Stack

đź“‹ Prerequisites

  • Node.js (v14 or higher)
  • npm or yarn
  • Supabase account
  • Git

đź”§ Installation

  1. Clone the repository:
git clone https://github.com/yourusername/greeting-wall.git
cd greeting-wall
  1. Install dependencies:
npm install
  1. Configure environment variables:

    • Copy .env.example to .env.local
    • Fill in your Supabase credentials and other configuration
  2. Initialize Supabase:

npm run supabase:init
  1. Start the development server:
npm run dev

🏗 Architecture

Infrastructure

L'application est hébergée sur une infrastructure moderne et évolutive :

  • HĂ©bergement : Instance Hostinger VPS
  • Orchestration : Coolify v4.0.0 pour le dĂ©ploiement et la gestion des conteneurs
  • Base de donnĂ©es : Instance Supabase dĂ©diĂ©e
  • Monitoring : IntĂ©grĂ© via Coolify dashboard
  • Backups : AutomatisĂ©s quotidiens via Hostinger VPS Snapshots

Flux de données

graph TD
    A[Client Browser] -->|HTTP Request| B[Next.js Pages]
    B -->|API Call| C[Next.js API Routes]
    C -->|Supabase Client| D[Supabase Database]
    C -->|Service Role Key| D
    E[Coolify] -->|Deploy & Monitor| B
    E -->|Deploy & Monitor| C
Loading

L'architecture du projet utilise une approche sécurisée où :

  • Les pages Next.js ne communiquent jamais directement avec la base de donnĂ©es
  • Toutes les requĂŞtes passent par l'API Next.js qui :
    • Valide les donnĂ©es
    • Gère les autorisations
    • Utilise une clĂ© de service sĂ©curisĂ©e pour Supabase
    • Applique les règles mĂ©tier
  • La base de donnĂ©es Supabase est protĂ©gĂ©e par :
    • Row Level Security (RLS)
    • Politiques d'accès granulaires
    • ClĂ©s d'API distinctes pour le client et le serveur

🏗 Project Structure

greeting-wall/
├── components/               # React components
│   ├── company-greeting-wall.tsx    # Main greeting wall component
│   ├── ErrorBoundary.tsx    # Error handling component
│   └── LoadingSpinner.tsx   # Loading indicator
├── pages/                   # Next.js pages
│   ├── api/                 # API routes
│   ├── _app.tsx            # App wrapper
│   ├── index.tsx           # Home page
│   └── [companyUrl].tsx    # Dynamic company page
├── services/               # Service layer
│   └── supabaseService.ts  # Supabase integration
├── styles/                 # Global styles
├── utils/                  # Utility functions
└── public/                 # Static assets

🔑 Environment Variables

Required environment variables (see .env.example):

  • NEXT_PUBLIC_SUPABASE_URL: Your Supabase project URL
  • NEXT_PUBLIC_SUPABASE_ANON_KEY: Supabase anonymous key
  • NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY: Supabase service role key
  • SUPABASE_PROJECT_ID: Project identifier
  • SUPABASE_API_PORT: API port (default: 54321)
  • SUPABASE_DB_PORT: Database port (default: 54322)
  • SUPABASE_STUDIO_PORT: Studio port (default: 54323)
  • SUPABASE_INBUCKET_PORT: Email testing port (default: 54324)
  • OPENAI_API_KEY: For AI-powered features
  • Additional configuration for storage, auth, and email settings

📚 Key Dependencies

  • @supabase/supabase-js: Supabase client library
  • react-quill: Rich text editor
  • cheerio: HTML parsing for LinkedIn integration
  • lucide-react: Icon library
  • tailwindcss: Utility-first CSS framework

🔄 Database Schema

The main table structure in Supabase:

messages (
  id: number (primary key)
  text: string
  signature: string
  created_at: timestamp
  company_url: string
  linkedin_url: string
  company_linkedin_url: string
)

🛡 Security

  • RLS (Row Level Security) policies implemented in Supabase
  • Environment variables for sensitive data
  • API route protection
  • Error boundary implementation

đź§Ş Development

  1. Create a new branch for features:
git checkout -b feature/your-feature-name
  1. Run development server:
npm run dev
  1. Access the application:
http://localhost:3000

📝 Contributing

  1. Fork the repository
  2. Create your feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

đź—ş Ideal Roadmap & Contributing

đź‘‹ Want to contribute? We'd love your help! Pick any item from this roadmap and submit a PR. Check our Contributing Guidelines to get started.

Performance & Optimization

  • Implement pagination for messages (10 messages per page)
  • Add Redis caching layer for frequently accessed data
  • Optimize image loading and storage
  • Implement service worker for offline support
  • Add server-side caching with Next.js ISR

Search & Filtering

  • Add search functionality for messages
  • Implement filters (date, author, content type)
  • Add advanced search with Elasticsearch
  • Add message tagging system

Authentication & Security

  • Add company authentication system
  • Implement role-based access control
  • Add email verification for company accounts
  • Add 2FA support
  • Implement audit logging

Display Options

  • Add multiple layout options:
    • Grid view (current)
    • List view
    • Timeline view
    • Carousel view
  • Add customizable themes
  • Support for dark/light mode
  • Add print-friendly view
  • Add fullscreen presentation mode

Integration & Export

  • Add export options (PDF, CSV)
  • Add social media sharing integrations
  • Add API documentation
  • Implement webhook system
  • Add analytics dashboard

đź“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

About

This project aimed at providing a selfhosted service for end of the year greetings

Resources

Stars

Watchers

Forks

Packages

No packages published