Your ideas matter. Make A Change.
Make-A-Change is a civic engagement platform that allows people to create, support, and spread proposals for change.
The goal is to make public initiatives easier to start, easier to discover, and easier to amplify.
Instead of ideas disappearing in small circles, this platform helps them reach the people who can support them.
- About the Project
- Goals
- Key Features
- Screenshots
- Tech Stack
- Technical Architecture
- Design Process
- Backend Architecture
- Project Status
Many people have ideas that could improve communities, institutions, or everyday life.
However, transforming an idea into a visible and supported initiative is often difficult.
Make-A-Change provides a structured platform where users can:
- propose initiatives
- gather support
- share ideas with a wider audience
- discover causes worth supporting
The goal is not only to host petitions, but to create a space where ideas resonate and grow through collective support.
The project focuses on a few core objectives:
The platform should be usable by anyone, regardless of technical knowledge.
Ideas should reach people who might support them.
Publishing and supporting initiatives should take only a few steps.
Information about initiatives should be clearly structured and easy to understand.
Users can publish proposals describing a change they want to promote.
Other people can support campaigns they believe in.
People living in a community such as schools, hobby clubs or sports teams can create organizations to group their ideas together and keep updated.
Comments, favorites and social media integrations make it easy for you to reach a wide target of people.
(UI preview β homepage)
- Node.js
- Next.js
- TypeScript
- MariaDB / MySQL
- React (via Next.js)
- Focus on Design and Accessiblity
- Modern responsive UI
- Next.js API Routes
- Service-based backend structure
- Zod schema validation
- JWT authentication
- MariaDB / MySQL
- Relational schema
Make-A-Change is built as a modern full-stack web application.
The project prioritizes:
- Maintenability and Scalability
- Secure data handling
- Strong typing
- Solid API reliability
- Readable backend flow
The application follows a structured architecture where each layer has a specific responsibility.
Client (Next.js React UI)
β
βΌ
API Endpoint (Next.js route)
β
βΌ
Validation Schema (Zod)
β
βΌ
Service Layer (Business logic)
β
βΌ
Database Access Layer
β
βΌ
MariaDB Database
This structure keeps logic organized and prevents mixing responsibilities across the codebase.
The project was designed in multiple stages before implementation.
Initial ideas were translated into simple diagrams to define:
- Platform goals
- Data relationships
- User flows
- System structure
The user interface was designed in Figma with attention to:
- UX clarity
- Intuitive navigation
- Accessibility
- Visual hierarchy
After the design phase, the application structure was implemented using a modular architecture to keep the codebase maintainable.
The backend follows an easily understandable flow that separates concerns between validation, logic, and data access.
User interaction
β
βΌ
API Route
β
βΌ
Input Validation (Schema)
β
βΌ
Service Layer
β
βΌ
Database Layer
β
βΌ
Database
/api
βββ /auth
β βββ /login
β βββ /me
β βββ /signup
βββ /campaign
β βββ /favorites
β βββ /[id]
β βββ /comments
β β βββ /[commentId]
β β βββ /moderation
β βββ /signature
βββ /notification
β βββ /create
βββ /organization
βββ /join
βββ /[id]
βββ /approval_requests
βββ /invite_codes
βββ /member
The project is currently in development.
Planned improvements include:
- campaign discovery algorithms
- moderation tools
- additional UI refinements
Ideas should not disappear.
With the right tools, a single idea can resonate, spread, and grow into real change.
Make-A-Change exists to make that possible.