Skip to content

all your useful building tools just one click away

License

Notifications You must be signed in to change notification settings

One-Up-Dev/AdaTools

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AdaTools

A collection of practical tools for developers

Fast, secure, and easy to use - just one click away πŸ’«

MIT License Next.js TypeScript


✨ Features

  • WebP Converter: Convert PNG/JPG images to WebP format with customizable quality
  • Background Remover: Remove image backgrounds with AI-powered precision
  • Translator: Translate text with DeepL's powerful AI engine
  • Base64 Encoder/Decoder: Encode and decode Base64 strings
  • UUID Generator: Generate UUIDs v4 and v7
  • Lorem Ipsum Generator: Generate placeholder text with custom word/character count
  • And more tools coming soon!

🎨 Customization

  • 9 Color Themes: Choose from cyan, lime, amber, blue, emerald, fuschia, indigo, orange, and pink
  • Dark/Light Mode: Seamless theme switching
  • Pinnable Modules: Pin your favorite tools for quick access
  • Responsive Design: Works on all devices

πŸš€ Tech Stack

πŸ“¦ Installation

Prerequisites

  • Node.js 20+ and pnpm
  • PostgreSQL database (see setup options below)
  • API keys (optional, only needed for specific features):

Database Setup (Optional - Only for Dashboard/Auth Development)

⚠️ You can skip this section unless you're working on:

  • User authentication features
  • Dashboard pinning system
  • User preferences

If you need a database, choose one option:

Option 1: Docker (Recommended - Easiest)

docker run --name adatools-db \
  -e POSTGRES_PASSWORD=postgres \
  -e POSTGRES_DB=adatools \
  -p 5432:5432 \
  -d postgres:16

# Your DATABASE_URL will be:
# postgresql://postgres:postgres@localhost:5432/adatools

Option 2: Local PostgreSQL

# Install PostgreSQL on your system
# macOS: brew install postgresql
# Ubuntu: sudo apt install postgresql
# Windows: Download from postgresql.org

# Create database
createdb adatools

# Your DATABASE_URL will be:
# postgresql://yourusername@localhost:5432/adatools

Option 3: Free Cloud Database

OAuth Setup (Optional - Only for Dashboard/Auth Development)

⚠️ You can skip this section unless you're working on:

  • User authentication features
  • Dashboard pinning system
  • User preferences

GitHub OAuth:

  1. Go to https://github.com/settings/developers
  2. Click "New OAuth App"
  3. Application name: AdaTools Dev
  4. Homepage URL: http://localhost:3000
  5. Authorization callback URL: http://localhost:3000/api/auth/callback/github
  6. Copy the Client ID and Client Secret to your .env

Setup

  1. Clone the repository

    git clone https://github.com/SLcode777/AdaTools.git
    cd AdaTools
  2. Install dependencies

    pnpm install
  3. Set up environment variables

    Create a .env file in the root directory:

    # Database (Optional)
    DATABASE_URL="postgresql://user:password@localhost:5432/adatools"
    
    # Better Auth (Optional)
    BETTER_AUTH_SECRET="your-secret-key-here"
    BETTER_AUTH_URL="http://localhost:3000"
    
    # OAuth (Optional)
    GITHUB_CLIENT_ID="your-github-client-id"
    GITHUB_CLIENT_SECRET="your-github-client-secret"
    GOOGLE_CLIENT_ID="your-google-client-id"
    GOOGLE_CLIENT_SECRET="your-google-client-secret"
    
    # API Keys (Optional)
    DEEPL_API_KEY="your-deepl-api-key"
    REMOVE_BG_API_KEY="your-removebg-api-key"
  4. Set up the database

    pnpm prisma generate
    pnpm prisma db push
  5. Run the development server

    pnpm dev
  6. Open http://localhost:3000 in your browser

πŸ”‘ What You Need to Develop

Feature Database + Auth API Keys Notes
WebP Converter ❌ No ❌ No Works standalone
Base64 Encoder ❌ No ❌ No Works standalone
UUID Generator ❌ No ❌ No Works standalone
Lorem Ipsum ❌ No ❌ No Works standalone
Translation Module ❌ No βœ… DeepL* *Can use env variable instead of user-saved key
Background Remover ❌ No βœ… Remove.bg* *Can use env variable instead of user-saved key
User Dashboard βœ… Yes ❌ No Only needed for testing pinning/preferences
API Key Management βœ… Yes ❌ No Only needed for testing user API key storage

For most development, you can work on:

  • All modules (UI, features, fixes)
  • New modules
  • Landing page
  • General improvements

You only need Database + Auth if you're working on:

  • User authentication flow
  • Dashboard pinning system
  • User preferences storage
  • Per-user API key management

πŸ—οΈ Project Structure

AdaTools/
β”œβ”€β”€ app/                    # Next.js app router
β”‚   β”œβ”€β”€ api/               # API routes
β”‚   β”œβ”€β”€ themes/            # Color theme CSS files
β”‚   └── page.tsx           # Landing page
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ dashboard/         # Dashboard components
β”‚   β”œβ”€β”€ layout/            # Layout components (header, footer)
β”‚   β”œβ”€β”€ modules/           # Tool modules
β”‚   └── ui/                # Reusable UI components (shadcn)
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ contexts/          # React contexts
β”‚   β”œβ”€β”€ lib/               # Utilities and configurations
β”‚   └── server/            # tRPC server and routers
β”œβ”€β”€ prisma/
β”‚   └── schema.prisma      # Database schema
└── public/                # Static assets

πŸ› οΈ Development

Adding a New Tool Module

  1. Create a new component in components/modules/:

    // components/modules/your-tool-module.tsx
    "use client";
    
    import { Module } from "../dashboard/module";
    
    interface YourToolModuleProps {
      isPinned?: boolean;
      onTogglePin?: () => void;
      isAuthenticated: boolean;
      onAuthRequired: () => void;
    }
    
    export function YourToolModule({
      isPinned,
      onTogglePin,
      isAuthenticated,
      onAuthRequired,
    }: YourToolModuleProps) {
      return (
        <Module
          title="Your Tool"
          description="Tool description"
          icon={<YourIcon className="h-5 w-5 text-primary" />}
          isPinned={isPinned}
          onTogglePin={onTogglePin}
          isAuthenticated={isAuthenticated}
          onAuthRequired={onAuthRequired}
        >
          {/* Your tool UI here */}
        </Module>
      );
    }
  2. Add it to the modules registry in src/contexts/modules-context.tsx

  3. If your tool needs server-side processing, create a tRPC router in src/server/api/routers/

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

See CONTRIBUTING.md for more details.

πŸ“ License

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

πŸ™ Acknowledgments

πŸ“§ Contact

For questions or suggestions, reach out at: sl.code.777@gmail.com

πŸ—ΊοΈ Roadmap

  • More developer tools
  • Drag and Drop the modules to organize them freely on the dashboard
  • Rework the UI for modules exploration
  • Add a searchbar to easily find modules
  • Tool usage analytics

Made with ❀️ by the AdaTools team

About

all your useful building tools just one click away

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 98.1%
  • CSS 1.9%