A full-stack application for managing international student scholarships. This system allows administrators to create, view, edit, and delete scholarship opportunities for international students.
- Dashboard with quick access to main functions
- List all available scholarships
- Create new scholarships with detailed information
- Edit existing scholarships
- Delete scholarships
- Modern, responsive UI
- Form validation
- Real-time updates
- React 18 with Vite
- TypeScript
- Material-UI (MUI) v5
- Apollo Client for GraphQL
- React Router v6
- date-fns for date formatting
- NestJS
- GraphQL
- Supabase (PostgreSQL)
- TypeScript
Before you begin, ensure you have the following installed:
- Node.js (v16 or later)
- npm (v8 or later)
- A Supabase account (free tier works fine)
git clone <your-repository-url>
cd issm
- Create a new Supabase project at https://supabase.com
- Create a new table named
scholarships
with the following schema:
create table scholarships (
id uuid default uuid_generate_v4() primary key,
name text not null,
description text not null,
amount numeric not null,
deadline timestamp with time zone not null,
requirements text not null,
country_restrictions text,
is_active boolean default true,
created_at timestamp with time zone default now(),
updated_at timestamp with time zone default now()
);
-- Enable Row Level Security
alter table scholarships enable row level security;
-- Create policy to allow all operations (you can modify this later)
create policy "Enable all access" on scholarships
for all
to public
using (true)
with check (true);
- Get your Supabase URL and anon key from Project Settings > API
- Navigate to the backend directory:
cd backend
- Install dependencies:
npm install
- Create a
.env
file in the backend directory:
SUPABASE_URL=your_supabase_url
SUPABASE_KEY=your_supabase_anon_key
- Start the backend server:
npm run start:dev
The backend will run on http://localhost:3000 with the GraphQL playground available at http://localhost:3000/graphql
- Navigate to the frontend directory:
cd frontend
- Install dependencies:
npm install
- Start the frontend development server:
npm run dev
The frontend will run on http://localhost:5173
issm/
├── backend/
│ ├── src/
│ │ ├── entities/ # GraphQL entity definitions
│ │ ├── resolvers/ # GraphQL resolvers
│ │ ├── services/ # Business logic
│ │ ├── scalars/ # Custom GraphQL scalars
│ │ └── config/ # Configuration files
│ └── package.json
└── frontend/
├── src/
│ ├── components/ # Reusable React components
│ ├── pages/ # Page components
│ ├── graphql/ # GraphQL queries and mutations
│ ├── types/ # TypeScript type definitions
│ └── apollo-client.ts # Apollo Client configuration
└── package.json
npm run start:dev
- Start the development server with hot reloadnpm run build
- Build the applicationnpm run start
- Start the production servernpm run test
- Run tests
npm run dev
- Start the development servernpm run build
- Build the applicationnpm run preview
- Preview the production build locally
-
GraphQL Playground Not Working
- Make sure CORS is properly configured in the backend
- Check if the GraphQL endpoint is accessible
-
Supabase Connection Issues
- Verify your Supabase credentials in the .env file
- Check if the database is accessible
- Ensure RLS policies are properly configured
-
Frontend Not Connecting to Backend
- Check if the backend server is running
- Verify the Apollo Client configuration
- Ensure the GraphQL endpoint URL is correct
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
MIT
For support, please open an issue in the repository or contact the project maintainers.