I. Zlecenie:
1. Kogo szukamy:
- Firmy lub zaangażowanego/pracowitego/terminowego freelancera
- Mile widziane doświadczenie w realizacji podobnego projektu
- Oczywiście dobra znajomość technologii w jakiej projekt ma być zrealizowany
- Projekt ma być dziełem autorskim wykonanym samodzielnie
- Umowa z przekazaniem autorskich praw majątkowych
2. Wycena:
- Prosimy o przedstawienie wstępnej wyceny przedstawionego zlecenia
- W razie wyceny przekraczającej nasze możliwości finansowe, możliwość podzielenia prac na etapy, gdzie po zakończeniu pierwszego z nich strona ma być sprawna i gotowa do umieszczenia w środowisku testowym/przedprodukcyjnym, jednak nie zawierająca wszystkich funkcjonalności
- W przypadku bezproblemowej współpracy, chętnie podejmiemy stałą współpraca przy dodawaniu nowych funkcjonalności do skryptu
3. Termin:
- Prosimy o podanie czasu potrzebnego na realizację zlecenia
4. Umowa:
- W razie potrzeby dodania dodatkowych funkcjonalności możliwość dodania aneksów do umowy
- Okres gwarancyjny minimum 12 miesięcy
- Ewentualne spory rozstrzygane będą przed Sądem Arbitrażowym wybranym przez zlecającego
5. Monitorowanie prac:
- Dostęp do SVN
- Dostęp do innych narzędzi monitoringu postępu prac
- Dostęp do środowiska testowego
- Wszelkie postępy w pracach będą na bieżąco monitorowane przez programistę
II. Założenia ogólne:
1. Zaprojektowanie tematycznej wyszukiwarki internetowej w skład której wchodzić ma Front End, Back End oraz Crawler stron WWW.
2. Technologia wykonania wyszukiwarki: JAVA (servlets + jsp) + Cassandra, lub JAVA (servlets + jsp) + MySQL, oraz doraźnie dynamiczne elementy wykonane w JavaScript/AJAX/JSON/YouNameIt
3. Środowisko działania: wyszukiwarka będzie funkcjonował w środowisku UNIX; podczas projektowania od razu należy nastawić się, że skrypt będzie dość mocno obciążony. Front End będzie stał za loadbalancerem + klaster WWW, oddzielny klaster dla bazy danych, nielimitowaną ilość samodzielnych nodów pod Crawler
4. Możliwość wykorzystania istniejących komponentów dostępnych na wolnych licencjach crawlerów (Nutch/Lucene/Crawler4j/YaCy/inne), frameworków lub template engine\'ów (musimy zostać o takim fakcie poinformowani)
III. Opis funkcjonalności:
1. Front End:
1.1 Założenia:
- Wszystkie linki mają być SEO Friendly kluczem jest, aby całość była perfekcyjnie indeksowana przez Google (jedno z najistotniejszych założeń)
- Ma być przygotowany pod obsługę wielu języków
1.2 Strona główna:
- Pole wyszukiwarki + dropdown menu z filtrem jakiego typu zasobu szukamy (html/img/mp3/avi/whatever) + przycisk szukaj, engine podpowiadający najczęściej wyszukiwane frazy w miarę wprowadzania zapytania (patrz google/filestube/itp)
- Obok przycisku szukaj link do zaawansowanych ustawień filtrowania (patrz niżej)
- Pod częścią główną lista 200 ostatnich zapytań i/lub najpopularniejszych zapytań z zadanego przedziału czasu
1.3 Strona z wynikami wyszukiwania:
- W topie pasek informacyjny a\'la Googe, czyli : Results for: [login to view URL] Results 1 - 10 of 6675 (found in 0.019s)
- Listing znalezionych zasobów; budowa pojedynczego wyniku to nazwa/rodzaj/nazwa domeny z której pochodzi/wielkość/data dodania/ocena/liczba komentarzy danego zasobu
- Nad i pod listingiem ma się znajdować chmura tagów dla zasobów podobnych do obecnie wyszukanego
- Na lewo od listingu ma się znajdować panel do ustawienia dodatkowych filtrów wyszukiwania:
- skąd pochodzi dany zasób, czyli strona A/B/C/D/E/itd
- posortować według popularności/daty/wielkości
- ustawić zakres wielkości zasobu (jeżeli w danym zasobie istnieje sens ustawienia tego filtra) <20MB / 20MB-200MB / 200MB-1GB / >1GB
- Możliwość ustalenia alertu mailowego dla danego zasobu (w przypadku dodania nowych zasobów odpowiadających danemu zapytaniu, raz dziennie wysyłamy mailowy alert do danego usera)
- Przygotować miejsca na include jednostek reklamowych (pod/nad/na prawo od listingu znalezionych zasobów), linki tekstowe/małe elementy graficzne co X wyników
- Przygotować formularz rejestracji usera (username/email/password/repeat password/recaptcha/ToS checkbox/dynamiczne podpowidzi przy błędnie uzupełnionych polach/resend validation/recover passord); w chwili obecnej brak dodatkowych funkcjonalności dla usera
1.4 Strona przekierowująca do konkretnego zasobu:
- Lekkie rozwinięcie danych o danym zasobie (czyli nazwa/rodzaj/nazwa domeny z której pochodzi/wielkość/data dodania/ocena/liczba komentarzy danego zasobu); dokładne rozmieszczenie elementów do uzgodnienia
- Widget typu [login to view URL], [login to view URL] lub inny podobny
- Możliwość dodania komentarza (+ recaptcha)
- Możliwość ocenienia zasobu
2. Back End
2.1 Założenia:
- Oczywiście niewidoczny publicznie z dostępem przez odpowiednio zabezpieczoną formatkę logowania
- Każda z funkcji ma funkcjonować w oddzielnej zakładce
- Możliwość zdefiniowania użytkownika z uprawnieniami dostępu tylko do Deletera + logowanie w czytelnej formie wszelkich akcji takiego usera
2.2 Funkcje:
- Dashboard, czyli na szybko przygotowany raport typu ile było odsłon/ile było przekierowań na witryny zewnętrzne/ile zasobów dodano/ile zasobów usunięto/ile było rejestracji userów/top referers/top queries/jaki był uptime/ilość błędów na podstawie analizy logów/itp (z możliwością określenia przedziału czasowego, domyślnie widok tygodniowy z podziałem na dni) z wykorzystaniem open flash chart 2
- Ustawienia ogólne, czyli limity pagowania wyników, podstawowe ustawienia działania Crawlera (limity/czasy itp) + inne (bardzo mile widziane sugestie w tym względzie)
- Listing zaindeksowanych zasobów + wyszukiwarka z zastosowaniem identycznych filtrów jak w Front Endzie + pagowanie wyników + sortowanie po własnościach wyników + opcjonalne akcje dla danego zasobu (deactivate/delete)
- Listing stron po których biega Crawler w poszukiwaniu nowych zasobów (możliwość dodawania/usuwania/blokowania/sortowania/wyszukiwania), określenia zasad/limitów przeszukiwania witryny (żeby nie dostać bana/nie zajechać witryny), określenia nazwy użytkownika i hasła dla for dyskusyjnych
- Listing RegExpów po których Crawler ma szukać linków (możliwość dodawania/usuwania/blokowania/sortowania/wyszukiwania) + user friendly opis danego RegExpa (ułatwiający znalezienia danego wyrażenia)
- Listing typów linków które trzymane są w bazie danych wyszukiwarki oraz przypisanych do nich RegExpów po których Crawler okresowo będzie sprawdzał czy dany zasób jest jeszcze dostępny (możliwość dodawania domen oraz powiązania ich z danym ReqExpem, edytowanie, usuwanie wpisów)
- Deleter, czyli duże pole tekstowe do wklejenia listy zasobów do wyrzucenia z bazy danych (przez zasób rozumiem link w domenie wyszukiwarki, znajdujący się w bazie wyszukiwarki) które przepuszczamy przez parser (ma obsługiwać wszelki formy linków generowanych przez wyszukiwarkę)
- Listing userów panelu admina (możliwość sortowania) + opcjonalne akcje dla danego usera (deactivate/delete), możliwość dodania nowego usera (username/email/password/rodzaj konta (admin/mod/deleter))
- Listing zwykłych userów + opcjonalne akcje dla danego usera (deactivate/delete)
- Logi, czyli listing akcji wykonanych w panelu admina z możliwością wyszukania po userze/akcji/id zasobu
3. Crawler
3.1 Założenia:
- Możliwość ustawienia kilku Crawlerów na oddzielnych serwerach dedykowanych
- Do każdego z serwerów może być przypisane kilka oddzielnych IP, Crawler ma więc je równomiernie wykorzystywać
3.2 Działanie
- Ma w określonych odstępach czasu skanować witryny podane w listingu stron po określonych RegExpach
- Ma mieć możliwość chodzenia po zabezpieczonych nazwą usera/hasłem forach dyskusyjnych vbulletin/[login to view URL] w wersjach aktualnych i wersja w dół (ręczne rejestrowanie konta i przekazanie danych do logowania w Back Endzie)
- Ma w określonych odstępach czasu sprawdzać czy wcześniej zaindeksowane zasoby są jeszcze dostępne
- Musi być dość delikatny, żeby nie zajechać danej strony i/lub nie zostać zbanowany przez automat/admina danej witryny
IV. Inne:
1. Szata graficzna: zapewnienie unikalnej szaty graficznej w ramach zlecenia (logotyp + layout strony + 4x animowane materiały reklamowe 728x90, 300x250, 468x60, 120x60 (gif lub flash))