Project Progress
Week 1This Week's Accomplishments
- Initialized Next.js frontend with TypeScript and Tailwind CSS
- Set up NestJS backend project with TypeScript configuration
- Configured Docker environment for PostgreSQL database
Project Setup and Configuration Progress
The first week of AutoTestify development has been focused on establishing the foundational architecture for our QA checklist application. We’ve successfully completed all the initial setup tasks that will serve as the backbone for further development.
Next.js Frontend Setup
First, I set up the Next.js frontend project using the latest version with TypeScript support. The process included:
- Creating a new Next.js project with the official CLI
- Setting up TypeScript configuration
- Installing and configuring Tailwind CSS for styling
- Establishing the basic project structure with proper environment variable management
The frontend is now ready for component development and integration with the backend API.
NestJS Backend Configuration
For the backend, I’ve initialized a NestJS application which will provide a robust framework for our API. This setup included:
- Creating a new NestJS project with TypeScript
- Configuring the project structure following NestJS best practices
- Setting up the initial app module and main entry point
- Preparing the environment variable configuration
PostgreSQL with Docker
To ensure consistent database access across development environments, I’ve implemented a Docker setup for PostgreSQL:
- Created a docker-compose.yml configuration for PostgreSQL in the backend repository
- Set up initial database schema creation scripts
- Configured environment variables for secure database connections
- Tested the database connection from the NestJS application
I made sure to place the Docker Compose file within the backend repository since the frontend and backend are separate codebases. This approach follows microservices best practices by keeping each repository self-contained and independently deployable.
Project Structure
Backend (NestJS)
The backend is organized with a clean, modular structure following NestJS conventions:
backend/
├── src/ # Main application code
│ ├── main.ts # Application entry point
│ └── app.module.ts # Root application module
├── test/ # Test files
├── dist/ # Compiled output
├── docker-compose.yml # PostgreSQL Docker configuration
├── env.template # Environment variables template
└── tsconfig.json # TypeScript configuration
Key configuration files include the docker-compose.yml
for PostgreSQL setup, environment templates for local development, and TypeScript configuration files that establish consistent coding standards.
Frontend (Next.js)
The frontend follows Next.js project structure with TypeScript and Tailwind CSS:
frontend/
├── src/ # Application source code
├── public/ # Static assets
├── .next/ # Next.js build output
├── env.local.template # Environment variables template
├── next.config.ts # Next.js configuration
├── tailwind.config.js # Tailwind CSS configuration
└── tsconfig.json # TypeScript configuration
This structure provides a clear separation of concerns with properly configured TypeScript, Tailwind CSS, and environment variable templates for consistent development across environments.
Port Configuration
Both the frontend and backend applications now use environment variables for port configuration:
- Frontend (Next.js): Configured to use PORT environment variable with a default of 3000
- Backend (NestJS): Set up to use PORT with a fallback to 3001
- Updated package.json scripts to respect these environment variables
This approach provides flexibility for different deployment environments while maintaining sensible defaults for development.
Next Steps
With the foundational architecture in place, the next phase will focus on implementing the core database schema using TypeORM and beginning work on the authentication system. We’ll also start laying the groundwork for the Slack integration that will be a key feature of AutoTestify.
The project is off to a strong start, and we’re on track to meet our first milestone by the target date of May 3rd, 2025.
Challenges Faced
TypeScript Configuration
Needed to ensure consistent TypeScript configuration between frontend and backend
Created separate tsconfig files with shared settings to maintain consistency
Docker Compose File Location
Had to determine the optimal location for docker-compose.yml since frontend and backend are separate repositories
Placed docker-compose.yml in the backend directory since the database is primarily used by the backend, allowing each repository to be self-contained and independently deployable
Port Configuration Management
Needed a flexible way to configure ports across environments without hardcoding values
Implemented environment variables for port configuration in both projects with sensible defaults (3000 for frontend, 3001 for backend) and updated package.json scripts accordingly
Docker Environment Variables
Had to manage environment variables securely between development and Docker environments
Created comprehensive .env template files with documentation and added them to .gitignore
Next Week's Plan
- Implement database schema and entity models using TypeORM
- Create initial user authentication module with JWT support
- Begin setting up Slack OAuth integration