프론트엔드/React

React-admin: 관리자 페이지 구축하기

코딩의 세계 2026. 4. 7. 16:49

React-admin: 기업용 B2B 관리자 페이지 구축의 종결자

웹 서비스를 운영하다 보면 사용자 관리, 게시글 모니터링, 통계 확인 등을 위한 백오피스(Back-office) 혹은 어드민 페이지 구축이 필수적입니다. 하지만 매번 비슷한 UI와 CRUD 로직을 반복해서 짜는 것은 개발자에게 매우 지루한 작업이죠. 이 고민을 해결해 주는 것이 바로 React-admin입니다.

공식 사이트

https://marmelab.com/react-admin/

 

React Admin

A frontend Framework for building B2B applications running in the browser on top of REST/GraphQL APIs, using ES6, React and Material Design

marmelab.com


1. React-admin이란 무엇인가?

React-admin은 REST/GraphQL API를 기반으로 데이터 중심(Data-driven) 애플리케이션을 구축하기 위한 오픈소스 프레임워크입니다. 단순히 UI 컴포넌트 모음집이 아니라, 데이터 취득(Fetching), 인증(Auth), 라우팅(Routing), 권한 관리가 하나로 묶인 풀스택 프런트엔드 솔루션에 가깝습니다.

React, React Query, React Hook Form, Material UI(MUI) 등 검증된 기술 스택을 기반으로 제작되어 안정성이 매우 뛰어납니다.


2. React-admin을 선택해야 하는 주요 장점

① 생산성 극대화

기본적인 리스트 조회, 상세 보기, 수정, 생성(CRUD) 화면을 구성하는 데 필요한 코드량이 일반적인 React 개발 방식의 10% 수준입니다. Resource 하나만 선언하면 나머지 로직은 프레임워크가 처리합니다.

② 데이터 공급자(DataProvider) 아키텍처

React-admin은 특정 백엔드에 종속되지 않습니다. DataProvider라는 어댑터를 통해 REST API, GraphQL, Supabase, Firebase 등 어떤 형태의 데이터 소스와도 연결할 수 있습니다. 이미 시장에 나와 있는 수십 개의 오픈소스 어댑터를 활용하면 설정은 단 몇 분 만에 끝납니다.

③ 엔터프라이즈급 기능 기본 탑재

  • 인증 및 권한: 로그인/로그아웃 처리는 물론, 역할(Role)에 따른 메뉴 노출 제어가 가능합니다.
  • 낙관적 업데이트 (Optimistic UI): 데이터 수정 시 서버 응답을 기다리지 않고 화면을 먼저 갱신하여 사용자 경험을 높입니다.
  • 필터 및 검색: 복잡한 다중 필터링과 전체 검색 기능을 선언적으로 구현할 수 있습니다.

④ 유연한 커스터마이징

Material UI 기반이므로 기본 디자인이 깔끔할 뿐만 아니라, 필요하다면 하위 컴포넌트를 직접 제작하여 끼워 넣을 수 있는 높은 자유도를 제공합니다.


3. 핵심 아키텍처 및 예제

3.1 기본 설정 (App.tsx)

가장 기초적인 설정만으로 작동하는 관리자 페이지의 모습입니다.

import { Admin, Resource, ListGuesser, EditGuesser } from "react-admin";
import jsonServerProvider from "ra-data-json-server";

// JSONPlaceholder API를 예시 데이터 소스로 사용
const dataProvider = jsonServerProvider("https://jsonplaceholder.typicode.com");

const App = () => (
  <Admin dataProvider={dataProvider}>
    {/* Resource name은 API 엔드포인트와 매칭됩니다. */}
    <Resource name="users" list={ListGuesser} edit={EditGuesser} />
    <Resource name="posts" list={ListGuesser} />
  </Admin>
);

export default App;

3.2 리스트 화면 커스터마이징 (UserList.tsx)

데이터를 어떻게 보여줄지 세밀하게 제어할 수 있습니다.

import { List, Datagrid, TextField, EmailField, UrlField, EditButton } from "react-admin";

export const UserList = () => (
  <List>
    <Datagrid rowClick="edit">
      <TextField source="id" label="번호" />
      <TextField source="name" label="이름" />
      <EmailField source="email" label="이메일" />
      <UrlField source="website" label="웹사이트" />
      <EditButton />
    </Datagrid>
  </List>
);

4. 실무 도입 시 고려사항

React-admin은 다음과 같은 상황에서 최고의 효율을 발휘합니다.

  • 사내 도구: 디자인보다 기능과 데이터 정합성이 중요한 경우.
  • 빠른 MVP: 서비스 초기 단계에서 관리 기능을 빠르게 붙여야 할 때.
  • 표준화: 여러 명이 관리자 페이지를 개발할 때 일관된 코딩 스타일을 유지하고 싶을 때.

5. 공식 문서 및 참고 자료

React-admin은 10년 가까이 유지보수되어 온 만큼 문서화가 환상적입니다. 특히 'Demos' 섹션에서 실제 구동 모습을 꼭 확인해 보세요.

🔗 React-admin 공식 문서 바로가기


6. 마치며

비즈니스의 핵심은 서비스 그 자체이지, 관리자 페이지를 예쁘게 코딩하는 것이 아닙니다. React-admin을 통해 단순 반복 작업 시간을 아끼고, 서비스의 본질적인 로직 개발에 더 많은 시간을 투자해 보세요. 생산성의 차이를 즉각적으로 경험하게 될 것입니다.


참고 글

https://ace0507.tistory.com/153

 

React admin체험 일기

이미 진행중이던 프로젝트에 투입이 되어 코드를 훑어 보았는데, 조금 당황스러웠다. export const PostList = () => ( ); 게시물 리스트를 나타내는건데, 코드가 이런식이었다. map을 돌려주고있는 것도

ace0507.tistory.com


https://velog.io/@himynameisminji/react-admin-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

 

react-admin 알아보기

현재 투입된 프로젝트에서 react-admin 을 처음봤다. 익히 알고 있던 react와는 뭔가 좀 다른 것 같아 처음에 사용할 때 당황했지만, 사용하다보니 편리한 부분이 많은 것 같고 추후 사용할 일이 많을

velog.io