Introduction to Contoso Real Estate Project
The Contoso Real Estate project offers an intelligent enterprise-grade reference architecture for modern web applications, focusing on leveraging JavaScript technologies. This project exemplifies best practices, architecture patterns, and functional components primarily for building composable frontends (micro-frontends) and cloud-native applications, specifically for deployment on Azure. Developers can use it as a reference point to construct their own applications, although they should integrate their own security audits before deploying in a production environment.
Supported Application Scenarios
The project showcases various scenarios, including:
- AI Chatbot Integration: It utilizes the Retrieval-Augmented Generation (RAG) pattern to integrate an AI chatbot.
- Payments Integration: The application demonstrates how to incorporate payment functionalities using Stripe.
- Real-time Notifications: Users can receive updates and notifications in real-time.
- Portal Application: A main entry point featuring property listings, the ability to mark favorites, user authentication, and user profiles.
- Headless CMS and Blog: A content management and blogging platform.
Architecture Overview
The architecture of the Contoso Real Estate project includes several components:
-
Frontend:
- Angular for Portal: Manages booking and viewing of property listings.
- Next.js for Blog: Allows viewing and creating blog posts.
- Playwright: Utilized for end-to-end testing of the application.
- Azure Static Web Apps: Hosts the portal application.
-
Backend:
- Strapi CMS: Manages content for both the portal and blog.
- Stripe: Handles payment processing.
- Fastify and Azure Functions: Support APIs for Stripe integration and portal interactions.
- Databases: Uses Azure's MongoDB for the portal and PostgreSQL for the CMS.
- Azure Storage: Facilitates data storage for CMS and blog applications.
- Azure Container Apps: Hosts APIs and related services.
- Azure Application Insights: Provides application monitoring and logging.
-
DevOps and Developer Tools:
- Azure CLI, GitHub Actions, Azure Developer CLI: These tools aid in provisioning, managing, and deploying the application to Azure.
- Visual Studio Code and GitHub Codespaces: Offer development environments to create and modify the project.
Development and Deployment
The project encourages the use of GitHub Codespaces for a seamless cloud-based development experience. This environment includes all necessary dependencies for starting the project. Developers can start services with simple commands and access development URLs to interact with different components of the application, such as the portal or CMS.
AI Chatbot Integration
The application has the flexibility to enhance user interaction by integrating an AI-driven chatbot. This is implemented using Azure's OpenAI services, enabling advanced user support capabilities. Detailed instructions for enabling this feature are available in the provided documentation.
Usage Costs
Using GitHub Codespaces and Azure resources incurs costs that users should be aware of. However, personal accounts may receive free monthly quotas, and users can manage their spending by setting limits and deleting unused codespaces.
Deployment and CI/CD
The Azure Developer CLI (azd
) facilitates the deployment process by provisioning infrastructure and deploying application code to Azure. Once the environment is set up, continuous integration and continuous deployment pipelines can be configured using client credentials for smooth application updates.
Contribution
The project is open to contributions. Whether it be fixing issues, adding features, or improving documentation, developers are welcome to participate following the established contribution guidelines.
In summary, the Contoso Real Estate project provides a comprehensive blueprint for developers looking to create sophisticated and modern Azure-based applications using popular JavaScript frameworks and robust cloud services. Whether you are a beginner or an experienced developer, this project offers plenty of opportunities to learn and implement cutting-edge web technologies.