# Missoula Council of the Deaf, Inc. Website This repository contains the source code for the Missoula Council of the Deaf, Inc. (MCDi) website. The project is built using a modern web stack with React for the frontend and Express.js for the backend, both implemented in TypeScript. The application is containerized using Docker for easy deployment and scalability. ## Features - Responsive design using Tailwind CSS - Dynamic UI components with React and Framer Motion for animations - TypeScript for enhanced type safety and developer experience - Express.js backend serving static React files and handling API requests - Docker containerization for consistent development and deployment environments - Calendar functionality with upcoming events display - About Us section with board member information - Bylaws and Minutes sections for organizational transparency - Sponsor showcase - Contact form in the footer ## Key Components ### Client-side - `App.tsx`: Main application component with routing setup - `Header.tsx`: Navigation component - `Home.tsx`: Landing page with featured content - `Calendar.tsx`: Interactive calendar with event display - `Meet-Board.tsx`: Board member profiles - `Bylaws.tsx`: Organization bylaws display - `Minutes.tsx`: Meeting minutes display - `Sponsors.tsx`: Sponsor information and logos - `Footer.tsx`: Footer component with contact form ### Server-side - `index.ts`: Express.js server setup - `sendEmail.ts`: Email sending functionality for contact form ## Getting Started To run this project locally: 1. Clone the repository 2. Install Docker and Docker Compose 3. Create a `.env` file in the root directory with necessary environment variables 4. Run `docker-compose up --build` in the project root directory 5. Access the website at `http://localhost:5000` ## Development - Client-side development: `cd client && npm start` - Server-side development: `cd server && npm run dev` - Build client: `cd client && npm run build` - Build server: `cd server && npm run build` ## Deployment The project is set up for easy deployment using Docker. The `Dockerfile` includes a multi-stage build process for both client and server, optimizing the final image size. ## Deployment with Docker Compose This project is containerized using Docker for easy deployment. Follow these steps to deploy the MCDi website: 1. Ensure Docker and Docker Compose are installed on your system. 2. Navigate to the project root directory containing the docker-compose.yml file. 3. Create a .env file in the root directory with the necessary environment variables: NODE_ENV=production GOOGLE_EMAIL=your-email@gmail.com GOOGLE_APP_PASSWORD=your-app-password 4. Build and start the containers: docker-compose up --build 5. Access the application at http://localhost:4000 6. To stop the containers: docker-compose down 7. Use Docker Compose in detached mode: docker-compose up -d This setup allows for easy deployment and management of the MCDi website container, with the ability to scale and update as needed using Docker Compose.