Merit Journal is a web application designed for Buddhist practitioners. It offers a private space to document Dhamma practice, including meditation sessions, sutta study, dāna (generosity), sīla (virtuous conduct), and bhāvanā (mental development). This personal digital record helps users cultivate wholesome states and observe their spiritual progress.
- User authentication via OpenID Connect (Google, Microsoft)
- Create journal entries with formatted text (HTML), images, and tags
- View entries chronologically and filter by tags
- Edit and delete journal entries
- Responsive design for mobile and desktop use
- ASP.NET Core Minimal APIs
- Clean Architecture (Domain, Application, Infrastructure, API layers)
- PostgreSQL database with EF Core (Npgsql)
- MediatR for CQRS pattern
- AutoMapper for object mapping
- JWT Bearer Authentication
- Swagger/OpenAPI documentation
- Containerized with Docker
- React 18 with functional components and hooks
- Material-UI for responsive design
- Redux Toolkit for state management
- redux-persist for persistent authentication state
- oidc-client-ts for authentication
- React Router for navigation
- Vite for fast development and optimized builds
/src
/Backend
/MeritJournal.Domain # Entity classes, domain events
/MeritJournal.Application # Business logic, CQRS handlers
/MeritJournal.Infrastructure # Data access, external services
/MeritJournal.API # API endpoints, configuration
/MeritJournal.UnitTests # Unit tests
/MeritJournal.IntegrationTests # Integration tests
/Frontend
/public # Static assets
/src
/app # Redux store setup
/components # Reusable UI components
/features # Feature-specific components and logic
/pages # Page components
/services # API services
- .NET 8 SDK
- Node.js 16+
- PostgreSQL 14+
- Docker (optional for containerized deployment)
-
Navigate to the Backend directory:
cd src/Backend -
Restore dependencies:
dotnet restore -
Update the database connection string in
MeritJournal.API/appsettings.json -
Apply migrations:
dotnet ef database update --project MeritJournal.Infrastructure --startup-project MeritJournal.API -
Run the API:
dotnet run --project MeritJournal.API
-
Navigate to the Frontend directory:
cd src/Frontend -
Install dependencies:
npm install -
Configure the API URL in the
.envfile:VITE_API_URL=https://localhost:5001 -
Start the development server:
npm start
Build and publish the API:
dotnet publish -c Release -o ./publish
Build Docker image:
docker build -t merit-journal-api .
Build for production:
npm run build
Deploy the build folder to AWS CloudFront:
- Upload the contents of the build folder to an S3 bucket
- Set up a CloudFront distribution pointing to the S3 bucket
- Configure the distribution settings for optimal static site hosting
- Update DNS records to point to the CloudFront distribution
This project is licensed under the MIT License.