- Replaced mcdi-intro.mp4 with new version (old version saved as mcdi-intro-old.mp4) - Added 5 new events to eventData.ts: * December 13, 2025: Board Meeting at Liquid Planet at The Book Exchange * March 14, 2026: Board Meeting at TBD location * June 13, 2026: Board Meeting at TBD location * September 12, 2026: Board Meeting at TBD location * September 12, 2026: Annual Membership Meeting at TBD location - All events use Tessa Williams as contact (tessa.williams@deafmissoula.org) - Video component in Meet-Board.tsx already configured to work with new video file |
||
|---|---|---|
| client | ||
| cline_docs | ||
| server | ||
| .env | ||
| .gitattributes | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| README.md | ||
| stack.env | ||
| VideoCaptionsHD.mov | ||
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 setupHeader.tsx: Navigation componentHome.tsx: Landing page with featured contentCalendar.tsx: Interactive calendar with event displayMeet-Board.tsx: Board member profilesBylaws.tsx: Organization bylaws displayMinutes.tsx: Meeting minutes displaySponsors.tsx: Sponsor information and logosFooter.tsx: Footer component with contact form
Server-side
index.ts: Express.js server setupsendEmail.ts: Email sending functionality for contact form
Getting Started
To run this project locally:
- Clone the repository
- Install Docker and Docker Compose
- Create a
.envfile in the root directory with necessary environment variables - Run
docker-compose up --buildin the project root directory - 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:
-
Ensure Docker and Docker Compose are installed on your system.
-
Navigate to the project root directory containing the docker-compose.yml file.
-
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
-
Build and start the containers: docker-compose up --build
-
Access the application at http://localhost:4000
-
To stop the containers: docker-compose down
-
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.