diff --git a/music_storage/core/urls.py b/music_storage/core/urls.py new file mode 100644 index 0000000..0f530a8 --- /dev/null +++ b/music_storage/core/urls.py @@ -0,0 +1,10 @@ +from django.urls import path + +from core.views import index + + +app_name = "index" + +urlpatterns = [ + path("", index, name="main_index"), +] diff --git a/music_storage/core/views.py b/music_storage/core/views.py index 91ea44a..4c627f1 100644 --- a/music_storage/core/views.py +++ b/music_storage/core/views.py @@ -1,3 +1,5 @@ from django.shortcuts import render -# Create your views here. + +def index(request, *args, **kwargs): + return render(request, "index.html") diff --git a/music_storage/music/urls.py b/music_storage/music/urls.py index e4fcd8f..03db8bc 100644 --- a/music_storage/music/urls.py +++ b/music_storage/music/urls.py @@ -1,8 +1,14 @@ from django.urls import path from music.views import TrackListView +from music.views import AlbumListView +from music.views import ArtistListView +app_name = "music" + urlpatterns = [ - path("", TrackListView.as_view(), name="track_list"), + path("tracks/", TrackListView.as_view(), name="track_list"), + path("albums/", AlbumListView.as_view(), name="album_list"), + path("artists/", ArtistListView.as_view(), name="artist_list"), ] diff --git a/music_storage/music_storage/settings.py b/music_storage/music_storage/settings.py index 76b8d3f..ccfdf38 100644 --- a/music_storage/music_storage/settings.py +++ b/music_storage/music_storage/settings.py @@ -122,6 +122,9 @@ USE_TZ = True # https://docs.djangoproject.com/en/6.0/howto/static-files/ STATIC_URL = 'static/' +STATICFILES_DIRS = [ + BASE_DIR / STATIC_URL +] STORAGES = { # default storage for user uploads diff --git a/music_storage/music_storage/urls.py b/music_storage/music_storage/urls.py index 3524e89..0de84bf 100644 --- a/music_storage/music_storage/urls.py +++ b/music_storage/music_storage/urls.py @@ -19,5 +19,6 @@ from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), - path('', include("music.urls")), + path('music/', include("music.urls")), + path('', include("core.urls")), ] diff --git a/music_storage/static/css/main.css b/music_storage/static/css/main.css new file mode 100644 index 0000000..313d12c --- /dev/null +++ b/music_storage/static/css/main.css @@ -0,0 +1,72 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + background-color: #f5f7fa; + color: #333; + line-height: 1.6; + padding-bottom: 100px; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 20px; +} + +header { + text-align: center; + padding: 30px 0; + background: linear-gradient(135deg, #bbc0d4 0%, #bab5c0 100%); + color: white; + border-radius: 10px; + margin-bottom: 30px; + box-shadow: 0 4px 15px rgba(0,0,0,0.1); +} + +h1 { + font-weight: 600; + font-size: 2.5rem; + margin-bottom: 10px; +} + +.logo-link { + text-decoration: none; + color: inherit; + cursor: pointer; +} + +.logo-link:hover { + opacity: 0.55; +} + +.main-nav { + display: flex; + justify-content: center; + gap: 20px; + margin-top: 15px; +} + +.nav-link { + text-decoration: none; + color: white; + font-weight: 500; + padding: 10px 20px; + background: rgba(255, 255, 255, 0.15); + border-radius: 8px; + transition: background 0.3s ease, transform 0.2s ease; + box-shadow: 0 2px 6px rgba(0,0,0,0.15); +} + +.nav-link:hover { + background: rgba(255, 255, 255, 0.30); + transform: translateY(-2px); +} + +.nav-link:active { + transform: translateY(0); +} \ No newline at end of file diff --git a/music_storage/static/js/player.js b/music_storage/static/js/player.js new file mode 100644 index 0000000..e69de29 diff --git a/music_storage/templates/base.html b/music_storage/templates/base.html index e69de29..5755799 100644 --- a/music_storage/templates/base.html +++ b/music_storage/templates/base.html @@ -0,0 +1,26 @@ +{% load static %} + + +
+ + + + {% block head_extra %}{% endblock %} +