Reliq is a secure platform for sharing sensitive messages and files that expire automatically.
Minimal accounts, no unnecessary complexity.
Designed for privacy-focused, temporary sharing.
- End-to-end encryption for all messages
- Self-destructing links that auto-delete after viewing or upon expiration
- One-time view: secrets are deleted after being accessed
- Clean, minimal user interface
- Optional password protection for added security
- Fully responsive design for all devices
- Account-based access for secret creation
- Dedicated landing, login, signup, create, and dashboard pages
- Expanded TTL presets (1 minute to 7 days)
- Password brute-force lockout controls (max failed attempts)
| Layer | Technology |
|---|---|
| Frontend | Next.js 15, React 19, Tailwind CSS, TypeScript |
| Backend | API Routes (Next.js) |
| Database | PostgreSQL via Prisma ORM |
| Caching | Redis (Upstash) |
| Auth | Better Auth + email/password |
| ID Gen | nanoid (8-character secure slugs) |
- Node.js 18 or higher
- PostgreSQL instance
- Redis (e.g. Upstash)
- pnpm (or npm)
-
Clone the repository
git clone <your-repo-url> cd serectsapp
-
Install dependencies
pnpm install
-
Configure environment variables
Create a.env.localfile in the root directory:DATABASE_URL="postgresql://username:password@localhost:5432/secret_share" UPSTASH_REDIS_REST_URL="your-redis-url" UPSTASH_REDIS_REST_TOKEN="your-redis-token" BETTER_AUTH_SECRET="your-strong-random-secret" BETTER_AUTH_URL="http://localhost:3000"
-
Set up the database
pnpm prisma generate pnpm prisma migrate deploy
-
Start the development server
pnpm dev
-
Open your browser and navigate to http://localhost:3000
- Visit the homepage
- Sign in or create an account
- Go to
/create - Enter your secret message
- Optionally set a password, expiry, and max failed attempts
- Click "Create Secret"
- Share the generated link with your recipient
- Open
/dashboard - Review active account-owned secrets and remaining TTL
- Copy links or revoke any secret instantly
- Open the secret link
- If password protected, enter the password
- View the secret message
- The secret is deleted after viewing
| Variable | Description | Required |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | Yes |
UPSTASH_REDIS_REST_URL |
Redis REST API URL | Yes |
UPSTASH_REDIS_REST_TOKEN |
Redis REST API token | Yes |
BETTER_AUTH_SECRET |
Secret used to sign auth cookies/tokens | Yes |
BETTER_AUTH_URL |
Public app URL for auth callbacks/cookies | Yes |
The application uses Slug plus Better Auth tables:
UserSessionAccountVerification
serectsapp/
├── src/
│ ├── app/
│ │ ├── api/
│ │ │ ├── auth/ # Better Auth handlers
│ │ │ ├── create/ # Create secret endpoint
│ │ │ ├── getslug/ # Retrieve secret endpoint
│ │ │ ├── secrets/ # Account-owned secret management
│ │ ├── create/ # Secret creation workspace
│ │ ├── login/ # Sign-in page
│ │ ├── signup/ # Sign-up page
│ │ ├── dashboard/ # Secret management dashboard
│ │ ├── s/
│ │ │ └── [...slug]/
│ │ │ └── page.tsx # Secret viewing page
│ │ ├── globals.css # Global styles
│ │ ├── layout.tsx # Root layout
│ │ └── page.tsx # Homepage
│ ├── lib/
│ │ ├── primsa.ts # Prisma client
│ │ └── redis.ts # Redis client
│ └── util/ # Utility functions
├── prisma/
│ └── schema.prisma # Database schema
├── public/ # Static assets
└── package.json
- Passwords are hashed using bcrypt with 12 salt rounds
- Unique 8-character slugs generated with nanoid
- One-time access: secrets are deleted after viewing
- Automatic expiration using Redis TTL
- Failed-password-attempt lockout with auto-destruction
- No sensitive data is logged
- Input validation and sanitization throughout
- Push your code to GitHub
- Connect your repository to Vercel
- Add environment variables in the Vercel dashboard
- Deploy
The application can be deployed to any platform that supports Next.js, including:
- Netlify
- Railway
- DigitalOcean App Platform
- AWS Amplify
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Commit your changes (
git commit -m 'Describe your feature') - Push to your branch (
git push origin feature/your-feature) - Open a pull request
If you encounter issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Include your environment details and error messages
- Rate limiting
- File attachments
- Custom domains
- Analytics dashboard
- API documentation
- Mobile application
Built with Next.js, Prisma, and Redis.
