A modern, responsive website built with React 19, TypeScript, and Express.js 5, featuring a contact form with email integration via Resend. Showcasing self-hosted infrastructure solutions with a focus on Docker containers, Coolify, Hetzner Cloud, Cloudflare, and Netdata.
- Modern UI: Built with React 19, TypeScript, and Tailwind CSS
- Responsive Design: Mobile-first approach with beautiful animations
- Contact Form: Integrated email sending via Resend API
- Technology Stack Showcase: Displays modern infrastructure technologies
- Performance Optimized: Built with Vite for fast development and production builds
- Production Ready: Configured for deployment on Coolify with Nixpacks
- Self-Hosted Focus: Emphasizes Docker containers and infrastructure management
The website showcases Ntek's self-hosted infrastructure platform with:
- Hero Section: "Self-Hosted Infrastructure Made Simple" with data center imagery
- Benefits: Deploy with confidence, scale with ease, monitor everything
- Technology Stack: Coolify, Hetzner Cloud, Cloudflare, Netdata
- Features: One-click deployments, auto-scaling, real-time monitoring
- Contact Form: Integrated with Resend for lead generation
- Coolify: Application deployment and management
- Hetzner Cloud: Infrastructure hosting
- Cloudflare: CDN and security
- Netdata: Real-time monitoring
- Docker: Containerization
- React 19.2.3 with TypeScript
- Vite 7.1.11 for build tooling
- Tailwind CSS for styling
- Radix UI for accessible components
- Framer Motion 12.24.11 for animations
- React Hook Form with Zod validation
- @tanstack/react-query 5.90.6 for server state management
- Express 5.2.1 with TypeScript
- Resend 6.6.0 for email functionality
- Zod 4.1.13 for request validation
- Drizzle ORM with PostgreSQL support
- Passport for authentication
- WebSocket support via ws package
- Nixpacks for Coolify deployment
- ESBuild 0.25.10 for server bundling
- TypeScript 5.9.3 for type safety
- Node.js 20.19.0 or 22.12.0+ for runtime compatibility
ntek-app-website/
βββ client/ # React frontend
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Page components
β β βββ hooks/ # Custom React hooks
β β βββ lib/ # Utility functions
β βββ public/ # Static assets
βββ server/ # Express backend
β βββ index.ts # Server entry point
β βββ routes.ts # API routes
β βββ resend.ts # Email configuration
β βββ vite.ts # Vite integration
β βββ storage.ts # Database/storage layer
β βββ middleware/ # Security and rate limiting middleware
β βββ rateLimit.ts # Rate limiting configuration
β βββ security.ts # Security headers
βββ shared/ # Shared types and schemas
β βββ schema.ts # Zod validation schemas
βββ attached_assets/ # Images and static assets
βββ nixpacks.toml # Coolify deployment config
βββ package.json # Dependencies and scripts
- Node.js 20.19.0 or 22.12.0+ (recommended for React 19 compatibility)
- npm (use only-allow@1.2.1 enforced)
-
Clone the repository
git clone https://github.com/neronlux/ntek-app-website.git cd ntek-app-website -
Install dependencies
npm install
-
Set up environment variables
# Create .env file (optional for development) RESEND_API_KEY=your_resend_api_key RESEND_FROM_EMAIL=your_from_email RESEND_TO_EMAIL=your_to_email DATABASE_URL=your_database_url # Required for Drizzle ORM
-
Start development server
npm run dev
The application will be available at
http://localhost:5000
npm run dev- Start development server with hot reloadnpm run build- Build for productionnpm start- Start production servernpm run check- TypeScript type checkingnpm run db:push- Push database schema (if using Drizzle)
This project is configured for easy deployment on Coolify using Nixpacks.
- Coolify instance running
- Git repository accessible by Coolify
- Resend API key
-
Create New Resource in Coolify:
- Go to Project β Environment β Resources β New
- Select "Public Repository" or connect your Git provider
-
Configure Build Pack:
- Build Pack: Nixpacks (auto-detected)
- Base Directory:
/(root) - Port:
5000
-
Set Environment Variables:
RESEND_API_KEY=your_resend_api_key RESEND_FROM_EMAIL=your_from_email@domain.com RESEND_TO_EMAIL=your_to_email@domain.com NODE_ENV=production -
Deploy:
- Click "Deploy" button
- Monitor build logs for any issues
Nixpacks will automatically:
- Detect Node.js project from
package.json - Clean existing dependencies:
rm -rf package-lock.json node_modules - Install dependencies with
npm install --no-audit --legacy-peer-deps(for React 19 compatibility) - Rebuild native modules:
npm rebuild - Run
npm run buildwhich:- Builds the frontend with Vite
- Bundles the backend with esbuild
- Start the app with
npm start
This project uses React 19.2.3 with the following compatibility measures:
- Updated
react-day-pickerto version 9.11.1 for React 19 support - Added
--legacy-peer-depsflag to handle peer dependency conflicts - All major dependencies updated to React 19 compatible versions
- Enforces npm usage via
only-allow@1.2.1in preinstall hook
The repository is fully documented with JSDoc comments for all components, hooks, and utility functions.
- UI Components: Located in
client/src/components/ui/, these are accessible, reusable components built on Radix UI. - Custom Components: Located in
client/src/components/, these are specific to the website sections (Hero, Features, etc.). - Server Logic: Located in
server/, handles API routes and email integration. - Middleware: Located in
server/middleware/, provides security headers and rate limiting. - Shared Schemas: Located in
shared/schema.ts, contains Zod validation schemas.
For detailed information on a specific function or component, refer to the inline documentation within the source files.
The contact form uses Resend for email delivery. To set up:
-
Get Resend API Key:
- Sign up at resend.com
- Create an API key in your dashboard
-
Configure Environment Variables:
RESEND_API_KEY: Your Resend API keyRESEND_FROM_EMAIL: Email address to send from (must be verified)RESEND_TO_EMAIL: Email address to receive submissionsDATABASE_URL: PostgreSQL connection string (for Drizzle ORM)
-
Verify Email Domain (optional):
- Add and verify your domain in Resend for better deliverability
- Modify
tailwind.config.tsfor custom design tokens - Update components in
client/src/components/ - Add new pages in
client/src/pages/
- Update hero section in
client/src/components/Hero.tsx - Modify technology stack in
client/src/components/TechnologyStack.tsx - Customize features in
client/src/components/Features.tsx
- Add new routes in
server/routes.ts - Update validation schemas in
shared/schema.ts - Configure middleware in
server/middleware/
- TypeScript 5.9.3 for type safety
- ESLint for code quality
- Prettier for code formatting
- Use functional components with hooks
- Implement proper TypeScript interfaces
- Follow accessibility best practices with Radix UI
- @tanstack/react-query for server state
- Local state with useState/useReducer
- Form state with React Hook Form
- Security headers middleware (CSP, HSTS, X-Frame-Options, etc.)
- Rate limiting on API endpoints
- XSS protection via HTML escaping
- X-Powered-By header disabled
- Trust proxy configuration for accurate IP detection
- React 19.2.3 - UI framework
- Express 5.2.1 - Backend framework
- Resend 6.6.0 - Email service
- Radix UI - Accessible components
- Tailwind CSS - Styling
- Framer Motion 12.24.11 - Animations
- @tanstack/react-query 5.90.6 - Server state management
- Drizzle ORM - Database ORM
- Zod 4.1.13 - Schema validation
- Passport - Authentication
- ws - WebSocket support
- Vite 7.1.11 - Build tool
- TypeScript 5.9.3 - Type safety
- ESBuild 0.25.10 - Fast bundling
- @tailwindcss/vite 4.1.18 - Tailwind integration
- tsx - TypeScript execution
- Drizzle Kit - Database migrations
- Ensure Node.js version is 20.19.0 or 22.12.0+ for React 19 compatibility
- Clear
node_modulesand reinstall if needed:rm -rf node_modules package-lock.json && npm install --legacy-peer-deps - Check TypeScript errors with
npm run check - The project enforces npm usage via
only-allow- do not use yarn or pnpm - Run
npm rebuildafter installing if native modules fail
- Verify environment variables are set correctly (RESEND_API_KEY, RESEND_FROM_EMAIL, RESEND_TO_EMAIL, DATABASE_URL)
- Check build logs in Coolify dashboard
- Ensure port 5000 is configured in Coolify
- Verify trust proxy is set correctly if behind a reverse proxy
- Verify Resend API key is correct
- Check email addresses are valid and verified
- Review Resend dashboard for delivery status
- Ensure rate limiting is not blocking requests
- Verify DATABASE_URL is correctly formatted
- Run
npm run db:pushto sync schema changes - Check Drizzle configuration in
drizzle.config.ts
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For support, create an issue in the GitHub repository.
Built with β€οΈ using modern web technologies