Professional consulting website built with Next.js 15, React 19, and AWS DynamoDB.
Algoritt is a consulting company specializing in:
- Risk Management
- Compliance & Governance
- Data Analytics & AI
- Sustainability & ESG
This website serves as the company's primary digital presence, featuring service information, career opportunities, and lead generation forms.
- Framework: Next.js 15.1.2 (App Router)
- UI Library: React 19.1.0
- Language: TypeScript
- Styling: Tailwind CSS
- Animations: Framer Motion
- Database: AWS DynamoDB
- Icons: Lucide React
- Deployment: Vercel (recommended)
- Node.js 18+ or 20+
- pnpm (package manager)
- AWS Account with DynamoDB access
- AWS IAM credentials
git clone <repository-url>
cd algoritt-websitepnpm installCreate a .env.local file in the root directory:
# AWS Configuration
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=your_aws_access_key_id
AWS_SECRET_ACCESS_KEY=your_aws_secret_access_key
# DynamoDB Tables (optional - defaults provided)
DYNAMODB_CONTACT_SUBMISSIONS_TABLE=algoritt-contact-submissions
DYNAMODB_NEWSLETTER_SUBSCRIPTIONS_TABLE=algoritt-newsletter-subscriptions
DYNAMODB_JOB_APPLICATIONS_TABLE=algoritt-job-applications
# Teams Webhook (optional)
TEAMS_CHANNEL_WEBHOOK=your_teams_webhook_urlpnpm run db:initThis creates the required DynamoDB tables with proper indexes.
pnpm run devOpen http://localhost:3000 in your browser.
pnpm run dev- Start development serverpnpm run build- Build for productionpnpm run start- Start production serverpnpm run lint- Run ESLintpnpm run db:init- Initialize DynamoDB tablespnpm run db:migrate- Migrate data from MongoDB to DynamoDB
├── app/ # Next.js App Router pages
│ ├── about/ # About page
│ ├── careers/ # Career listings
│ ├── contact/ # Contact form
│ ├── services/ # Service pages
│ └── layout.tsx # Root layout
├── src/
│ ├── actions/ # Server actions
│ │ └── forms.ts # Form submission handlers
│ ├── components/
│ │ ├── shared/ # Shared components
│ │ └── ui/ # UI components
│ ├── constants/ # Static data
│ │ ├── about.ts
│ │ ├── careers.ts
│ │ └── services.ts
│ ├── lib/
│ │ ├── dynamodb.ts # DynamoDB client
│ │ ├── dynamodb-models.ts # Database models
│ │ └── notifications.ts # Teams notifications
│ ├── types/ # TypeScript types
│ └── utils/ # Utility functions
├── public/
│ └── assets/ # Images, videos, icons
└── scripts/
├── init-dynamodb.js # Database initialization
└── migrate-mongo-to-dynamodb.js # Migration script
- Homepage - Hero, services overview, testimonials, stats
- About - Company mission, values, and approach
- Services - Detailed service descriptions with sub-services
- Careers - Job listings with application forms
- Contact - Contact form and company information
All forms are integrated with DynamoDB:
- Contact Form - Lead generation
- Newsletter Subscription - Email collection
- Job Applications - Career applications with resume upload
Forms automatically send notifications to Microsoft Teams (when configured).
- Service pages generated from
src/constants/services.ts - Career pages generated from
src/constants/careers.ts - Sitemap automatically generated from available pages
If migrating from MongoDB to DynamoDB, see DYNAMODB_SETUP.md for detailed instructions.
Quick migration:
# Ensure MongoDB URI is in .env.local
pnpm run db:init # Create DynamoDB tables
pnpm run db:migrate # Migrate data- Push code to GitHub
- Import project in Vercel
- Add environment variables
- Deploy
Ensure all environment variables are set in your deployment platform:
AWS_REGIONAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYDYNAMODB_CONTACT_SUBMISSIONS_TABLEDYNAMODB_NEWSLETTER_SUBSCRIPTIONS_TABLEDYNAMODB_JOB_APPLICATIONS_TABLETEAMS_CHANNEL_WEBHOOK
Colors and typography are defined in tailwind.config.ts and app/globals.css.
Primary colors:
- Purple:
hsl(265 89% 56%) - Background: Dark theme
- Accent: Red for CTAs
To update content:
- Services: Edit
src/constants/services.ts - Careers: Edit
src/constants/careers.ts - About: Edit
src/constants/about.ts
Follow semantic commit format:
<type>(<scope>): <description>
Example: feat(careers): add new job posting
Types: feat, fix, refactor, style, docs, test, chore
- Use TypeScript strict mode
- Follow ESLint configuration
- Use Work Sans font family
- Escape special characters in commit messages
- Images optimized with Next.js Image component
- Code splitting with dynamic imports
- Video lazy loading
- Responsive design (mobile-first)
- Server-side form validation
- AWS IAM for database access
- Environment variables for sensitive data
- HTTPS only in production
Monitor DynamoDB usage in AWS Console:
- Check read/write capacity utilization
- Review CloudWatch metrics
- Set up billing alerts
For issues or questions:
- Check documentation
- Review CloudWatch logs
- Check DynamoDB console
- Review application logs
Private - All rights reserved