Arba Minch University Research & Outreach Management System (AMU-ROMS)

Tool Selection Team - Comprehensive Guide to Web App Development Tools and Selection Criteria

Tools and Selection Criteria

1. Frontend Development Tools

  • Frameworks & Libraries:
    • React.js – Popular for SPA and component-based architecture.
    • Vue.js – Lightweight, beginner-friendly alternative to React.
    • Angular – Full-featured framework maintained by Google.
    • Svelte – Compiles to highly efficient vanilla JS, great for performance.
    • Next.js / Nuxt.js – Frameworks for SSR (React/Vue respectively).
    • Laravel-blade ✅ – simple, yet powerful templating engine that is included with Laravel.
  • Styling:
    • CSS Frameworks: Bootstrap ✅, Tailwind CSS, Bulma
    • Preprocessors: Sass / SCSS, Less
  • Build Tools:
    • Webpack – Powerful bundler with advanced configuration.
    • Vite ✅– Fast modern build tool, especially good with React/Vue.
    • Parcel – Zero-config alternative to Webpack.
    • Snowpack – ES module-based fast dev environment (less common now).

2. Backend Development Tools

  • Languages & Frameworks:
    • JavaScript (Node.js): Express.js, NestJS
    • Python: Django, Flask
    • PHP: Laravel ✅ , Symfony
    • Ruby: Ruby on Rails
    • Java: Spring Boot
  • APIs & Real-Time:
    • REST API ✅ - Standard for data exchange.
    • GraphQL – Flexible queries for complex frontends.
    • WebSockets / Socket.io – For real-time updates.

3. Database Tools

  • SQL Databases:
    • PostgreSQL
    • MySQL / MariaDB ✅
    • SQLite
  • NoSQL Databases:
    • MongoDB
    • Firebase Realtime DB / Firestore
    • Redis
  • ORM Tools:
    • Prisma (Node.js)
    • Sequelize (Node.js)
    • Eloquent (Laravel) ✅
    • SQLAlchemy (Python)

4. DevOps & Deployment

  • Version Control:
    • Git ✅ (with GitHub ✅, GitLab, Bitbucket)
  • CI/CD:
    • GitHub Actions ✅
    • GitLab CI
    • CircleCI / TravisCI
  • Containerization & Deployment:
    • Docker
    • Kubernetes
    • Vercel / Netlify
    • Heroku
    • AWS / GCP / Azure
    • Neway 🤣

5. Authentication & Authorization

  • Authentication
    • Legacy authentication ✅ - using username and password
    • Firebase Authentication
    • Auth0
    • OAuth 2.0 / OpenID Connect ✅
    • Helmet.js (Express middleware)
    • CSP Headers
    • HTTPS via Let's Encrypt / Cloudflare
  • Authorization
    • Role-Based Access Control (RBAC)- admin,researcher... (e.g. spatie/laravel-permission)
    • Attribute-Based Access Control (ABAC) - Access is granted based on attributes (user, resource, environment) (e.g. user.department == 'HR')
    • Permission-Based Access Control (PBAC) - Permissions are assigned directly to users or resources
    • Hybrid approach ✅

6. Testing Tools

  • Frontend:
    • Jest
    • Cypress
    • Playwright
  • Backend:
    • Mocha / Chai (Node.js)
    • Pytest (Python)
    • PHPUnit (PHP) ✅

7. Project Management & Collaboration

  • Trello / Jira
  • Notion
  • Slack / Microsoft Teams ✅

Our criteria behind selecting the tools

  • Project Requirements:

    Based on complexity and requirements of the project.

  • Team Expertise:

    Teams background and familiarity with to reduce development time.

  • Performance & Scalability:

    Based on how well the tool handles high traffic, real-time updates, and growing data. e.g. Our reference to choose DB tool is SMIS (which handles huge amounts students data)

  • Development Speed:

    Prioritized tools with built-in features, scaffolding, and reusable components (e.g., Laravel - to accelerate development.

  • Community & Support:

    Tools with active communities, regular updates, and good documentation. More support means easier problem-solving.

  • Integration Capabilities:

    The tool that integrates well with other frontend and APIs. Example: react, auth, KoboToolbox

  • Security Features:

    Built-in protection against common vulnerabilities (XSS, CSRF, SQLi). Support for JWT, OAuth, HTTPS is a plus.

  • Ecosystem and Extensibility:

    A mature ecosystem offers more plugins and packages. Laravel (Composer)

  • Hosting & Deployment Complexity and Compatibility:

    Tools that are simpler and compatible with our hosting or CI/CD pipeline

  • Testing & Debugging Support:

    Tools that support testing frameworks (PHPUnit)

  • Cost & Licensing:

    Open-source tools - budget-friendly

  • Future Maintenance & Upgrades:

    Tools with clear roadmaps and support for upgrades.