Repository navigation
Expand file tree
/
Copy pathsetup.bat
More file actions
210 lines (192 loc) · 5.61 KB
/
Copy pathsetup.bat
File metadata and controls
210 lines (192 loc) · 5.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
@echo off
setlocal enabledelayedexpansion
echo.
echo ================================================================
echo.
echo TanStack Start + PostgreSQL Setup
echo.
echo ================================================================
echo.
REM Check if Node.js is installed
echo [Step] Checking Node.js installation...
where node >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
echo [ERROR] Node.js is not installed. Please install Node.js 18+ first.
echo Visit: https://nodejs.org/
exit /b 1
)
for /f "tokens=*" %%i in ('node -v') do set NODE_VERSION=%%i
echo [OK] Node.js %NODE_VERSION% found
REM Check if Docker is installed
echo [Step] Checking Docker installation...
where docker >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
echo [ERROR] Docker is not installed.
echo.
echo Please install Docker Desktop:
echo https://docs.docker.com/desktop/install/windows-install/
echo.
exit /b 1
)
echo [OK] Docker found
REM Check if Docker is running
echo [Step] Checking if Docker is running...
docker info >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
echo [ERROR] Docker is not running. Please start Docker Desktop first.
echo.
echo After starting Docker Desktop, run this script again:
echo npm run setup
echo.
exit /b 1
)
echo [OK] Docker is running
REM Install npm dependencies
echo.
echo [Step] Installing npm dependencies...
call npm install
if %ERRORLEVEL% NEQ 0 (
echo [ERROR] Failed to install dependencies
exit /b 1
)
echo [OK] Dependencies installed
REM Setup environment file
echo.
echo [Step] Setting up environment variables...
if not exist .env (
if exist .env.example (
copy .env.example .env >nul
echo [OK] Created .env file from .env.example
) else (
(
echo # PostgreSQL Configuration
echo POSTGRES_USER=postgres
echo POSTGRES_PASSWORD=postgres
echo POSTGRES_DB=tanstack_db
echo POSTGRES_PORT=5432
echo.
echo # Application Configuration
echo APP_PORT=3000
echo.
echo # Database URL
echo DATABASE_URL=postgresql://postgres:postgres@localhost:5432/tanstack_db
) > .env
echo [OK] Created .env file with defaults
)
) else (
echo [OK] .env file already exists
)
REM Stop any existing containers
echo.
echo [Step] Cleaning up any existing containers...
docker-compose down >nul 2>nul
echo [OK] Cleanup complete
REM Start Docker containers
echo.
echo [Step] Starting Docker containers (this may take a few minutes)...
docker-compose up -d
if %ERRORLEVEL% NEQ 0 (
echo [ERROR] Failed to start Docker containers
exit /b 1
)
echo [OK] Containers started
REM Wait for PostgreSQL to be ready
echo.
echo [Step] Waiting for PostgreSQL to be ready...
set RETRY_COUNT=0
set MAX_RETRIES=30
:wait_postgres
docker exec tanstack-postgres pg_isready -U postgres >nul 2>nul
if %ERRORLEVEL% EQU 0 goto postgres_ready
if %RETRY_COUNT% GEQ %MAX_RETRIES% goto postgres_timeout
set /a RETRY_COUNT+=1
timeout /t 1 /nobreak >nul
echo|set /p=.
goto wait_postgres
:postgres_timeout
echo.
echo [ERROR] PostgreSQL failed to start in time
echo.
echo Try checking the logs:
echo docker-compose logs postgres
exit /b 1
:postgres_ready
echo.
echo [OK] PostgreSQL is ready
REM Wait for app container
echo [Step] Waiting for application container...
timeout /t 5 /nobreak >nul
echo [OK] Application container is ready
REM Run Prisma setup
echo.
echo [Step] Setting up database with Prisma...
docker exec tanstack-app npx prisma generate >nul 2>nul
echo [OK] Prisma client generated
REM Check for migrations
if exist "prisma\migrations" (
echo [Step] Applying existing migrations...
docker exec tanstack-app npx prisma migrate deploy
echo [OK] Migrations applied
) else (
echo [WARNING] No migrations found. You can create your first migration with:
echo docker exec -it tanstack-app npx prisma migrate dev --name init
)
REM Check if app is responding
echo.
echo [Step] Verifying application is running...
timeout /t 2 /nobreak >nul
curl -s http://localhost:3000 >nul 2>nul
if %ERRORLEVEL% EQU 0 (
echo [OK] Application is responding
) else (
echo [WARNING] Application might still be starting up...
)
REM Display success message
echo.
echo ================================================================
echo.
echo Setup Complete!
echo.
echo ================================================================
echo.
echo [SUCCESS] Your TanStack Start application is ready!
echo.
echo Summary:
echo - Application: http://localhost:3000
echo - Database: PostgreSQL on localhost:5432
echo - Hot reload: Enabled
echo.
echo Next Steps:
echo.
echo 1. Open your browser to http://localhost:3000
echo.
echo 2. Edit your Prisma schema:
echo File: prisma\schema.prisma
echo.
echo 3. Create your first migration:
echo docker exec -it tanstack-app npx prisma migrate dev --name init
echo.
echo 4. Start coding in the src\ directory
echo Changes will hot reload automatically!
echo.
echo Documentation:
echo - Docker Guide: DOCKER.md
echo - Prisma Guide: PRISMA-DOCKER.md
echo.
echo Useful Commands:
echo - View logs: npm run docker:logs
echo - Stop app: npm run docker:down
echo - Restart: npm run docker:up
echo - Reset database: npm run docker:clean
echo.
echo Tip: Open Prisma Studio to view your data:
echo docker exec -it tanstack-app npx prisma studio
echo.
REM Try to open browser
set /p OPEN_BROWSER="Open http://localhost:3000 in browser? (y/N) "
if /i "%OPEN_BROWSER%"=="y" (
start http://localhost:3000
)
echo.
echo Happy coding!
echo.